2014-10-05 230 views
0

看起來好像它不是我想要的(至少根據我讀過的一些文章)。但是要仔細檢查一下。我正在從我的數據庫中讀取DateTime。在數據庫中它被寫爲「01.01.2011」,但是當我用SQL讀取它並將它存儲在string中時,它會顯示「01.01.2011 00:00:00」。 然後,我想好了,我只是從string減少時間。但有一個竅門,似乎這是不可能的。即使從string(也就是「01.01.2011」)中刪除「00:00:00」部分,並將其轉換爲DateTime,仍然顯示「00:00:00」。 我是C#的新手,但是看起來這個部分在Java中可以更好地解決,您可以在其中定義您希望如何使用日期的方式,並且可以像這樣顯示(不需要在不需要的情況下進行排序)。 所以爲了說清楚,是否真的不可能實現我想要的(並且我必須在我的表示層中處理正確的格式),還是我沒有找到正確的信息?C#將字符串轉換爲無日期時間的日期時間

感謝

+0

我不清楚你在努力達到什麼目的。你能告訴我們你實際上想要做什麼嗎?在你的問題中交換最後'我想要'的簡短描述。 – 2014-10-05 23:03:51

回答

1

DateTime在.NET是總是的日期和時間。如果你喜歡,你可以忽略時間部分,但它仍然存在。在內部,DateTime自1/1/0001以來跟蹤整個滴答數。 (毫秒中有10,000個滴答聲)。所以DateTime而不是是不可能有時間分量的。

對於僅限日期的數據,常見約定是使用時間設置爲午夜(00:00:00)的日期。您可以通過使用其.Date屬性從任何DateTime中獲得這些中的一個。

你一定要小心,一旦你忽略了這個時間,那你總是忽略時間。否則,在巴西等地處理夏令時問題時,您可能會遇到問題 - 時間從晚上11:59:59到凌晨1:00:00。如果您對如何處理數據不夠謹慎,那麼在午夜時分填入DateTime的僅限日期的數據可能會被誤解爲實際上並不存在的本地時間。

在.NET Framework中沒有時間的情況下沒有真正日期的內置類型。但是,您可以在Noda Time庫的LocalDate結構中找到它。如果你有很多基於日期的業務邏輯,你可能會考慮使用它。

+0

謝謝,這也是我已經發現的,但想在這裏檢查它(因爲我無法相信它)。我也讀過關於野田時間的消息,但是我想在嘗試之前我會檢查它是否真的不可能使用本地C#。再次感謝 – user3466562 2014-10-06 08:54:51

+0

NP。此外,您還在比較Java,但也存在類似的問題。 'java.util.Date'是日期+時間類型,「日曆」也是。 Joda-Time和Java8都有一個'LocalDate'類型,類似於Noda Time的。 – 2014-10-06 16:29:49

0

myDatTime.ToString("MMM dd, yyyy");會做的伎倆

+0

所以我必須將它從字符串轉換爲datetime(因爲從sql我把它作爲一個字符串),然後從datetime到字符串(當應用你的功能),然後再次datetime(因爲我需要它作爲日期時間)? – user3466562 2014-10-05 22:45:35

+0

@ user3466562 c#支持直接使用數據庫日期時間類型進行日期時間類型轉換。所以當你讀/寫數據庫時,你可以傳入datatime對象作爲參數,它會很樂意接受它。如果你只想顯示沒有時間的日期,那麼做字符串方法 – Steve 2014-10-05 22:49:10

+0

我也看到了,但問題是當datetime爲空時。所以我想我會把它作爲字符串讀取,然後處理它。但這似乎是一個屁股疼痛。據此:http://social.msdn.microsoft.com/Forums/vstudio/en-US/4ff9b7c9-ef08-4fe3-a579-d8a0c7188796/remove-time-from-datetimeminvalue它是不可能截斷時間從在C#中的日期時間。所以我想我會檢查如果字符串日期是空的,如果不檢索它作爲日期時間 – user3466562 2014-10-05 23:00:11

0

如果我理解你..這可能會有幫助。
在C#:
if(!string.IsNullOrEmpty(yourDateTime)) { yourDateTime.ToString("dd/MM/yyyy"); }
在SQL服務器

select convert(varchar, yourDateTime ,102) as [yourDateTime] 
相關問題