2014-07-14 68 views
0

在我的一個應用程序中,我從服務器接收date作爲string檢測/解析00:00:00(不含日期)到日期時間

例子:

2014-04-04 00:00:00 
2013-05-07 13:00:36 
2014-05-03 
2014-02-01-07:00:00 '(obviously not a valid datetimeformat but thats been handled further inside the code) 
00:00:00 'The null-date (meaning NULL is the value inside the database) 

它是讓我頭疼的空日期。因爲如果我嘗試parse{00:00:00}datetime我總是得到的today日期和not the DateTime.Minvalue

代碼示例:

Dim i As DateTime 
    i = DateTime.Parse(i) 
    Console.WriteLine(i.ToString("yyyy-MM-dd HH:mmm:ss")) 'Returns 2014-07-14 00:00:00 
    Console.ReadLine() 

我想實現的任何如下結果:

  1. 使用no Regex如何檢測日期組件的存在(或不存在)以檢測空日期
  2. 如何才能我將我的null-date (00:00:00)投射到解析輸出爲DateTime.MinValuenothing的日期時間。

我知道解決方案可能很簡單,但我只是不斷想念它。我將非常感謝有關此問題的任何解決方案或建議。

注:該軟件是很舊的和仍在.Net 2.0

注運行:有效的DateTime 可能含有「00:00:00」,所以String.Contains是出了問題。

+5

爲什麼不只是使用平等?檢查字符串*是否等於*「00:00:00」,並以不同的方式處理。 –

+0

這個解決方案非常簡單。爲什麼我沒有想過這個?除了你提供的解決方案(順便說一下,這是非常好的)是否有(可以)任何可能將它投射到datetime.minvalue? – User999999

+0

Jon Skeet說的是什麼,但是通過使用'Trim'函數在比較之前去掉字符串周圍的空白。 PS:至於將其轉換爲DateTime.MinValue,只需指定您想要的值,如「如果修剪(MyString)=」00:00:00「然後MyDate = DateTime.MinValue」 – Jens

回答

2

您可以設置NoCurrentDateDefault,像DateTime.Parse幫助提示;-)

i = DateTime.Parse("00:00:00", Nothing, Globalization.DateTimeStyles.NoCurrentDateDefault) 

MSDN:http://msdn.microsoft.com/en-us/library/system.datetime.parse%28v=vs.110%29.aspx

被解析可以採取以下形式的字符串:

  • ...

  • 帶時間但沒有日期分量的字符串。該方法假定當前的日期,除非你調用解析(字符串的IFormatProvider,DateTimeStyles)過載和包括DateTimeStyles.NoCurrentDateDefault在樣式參數,在這種情況下,該方法假設1月1日,0001

+0

甜美正是我需要的!隊友的歡呼聲! – User999999