2013-03-26 73 views
0

我發現在datetime數據類型以當前日期(僅日期)。日期時間解析異常

對於我做了一些谷歌搜索,並形成如下代碼>>

DateTime dtCurrDate; 
dtCurrDate=DateTime.ParseExact(DateTime.Now.Date.ToShortDateString(),"MM/dd/yyyy",null); 

此代碼是給我的異常,因爲:

String was not recognized as a valid DateTime. 

內它是什麼錯誤?

請幫幫我。

+1

爲什麼你需要'DateTime.Now.Date'是DateTime類型?對於錯誤,你的Shortdate格式不是'MM/dd/yyyy' – V4Vendetta 2013-03-26 07:47:39

+0

'DateTime.Now.Date.ToShortDateString()'確實輸出'MM/dd/yyyy'格式的東西嗎? – 2013-03-26 07:48:34

+0

我希望它與datetime格式的數據庫中的expDate值進行比較。 – Freelancer 2013-03-26 07:48:43

回答

2

我相信大家都知道DateTime.Now.Date財產,這將使當前的日期與時間設置爲00:00:00的。在解析

現在,你爲什麼有問題:

可能是因爲你目前的文化,DateTime.ToShortDateString()會給你(爲en-US文化):

Displaying short date for en-US culture: 
//   6/1/2009 (Short Date String) 

後來你與解析:"MM/dd/yyyy"你需要單個數字Md

因此,代碼是:

dtCurrDate=DateTime.ParseExact(DateTime.Now.Date.ToShortDateString(),"M/d/yyyy",null); 

這將是更好,如果你可以的ToShortDateString()結果存儲在一個字符串,然後檢查你會得到什麼樣的格式,然後相應地解析。

+0

非常感謝... @habib – Freelancer 2013-03-26 07:55:04

+0

@Freelancer,不客氣 – Habib 2013-03-26 07:56:21

+0

它給我看時間也 – Freelancer 2013-03-26 11:23:46

1

您應該知道DateTime本身沒有像MM/dd/yyyydd/MM/yyyy這樣的格式。它只是你的,你怎麼想它顯示出來,您可以通過ToString()

通過各種形式控制它可以讓你的數據庫值解析爲DateTime喜好的問題,然後你可以只比較Date部分只有使用<instance>.Date(這有時間部分在午夜12)

2

你的格式字符串是錯誤的。你應該用 「d」 爲標準的日期

「d」
短日期模式。

2009/6/15下午1點45分30秒 - > 2009/6/15(EN-US)

2009/6/15下午1點45分30秒 - > 15/06/2009( FR-FR)

2009/6/15下午1時45分30秒 - > 2009/06/15(JA-JP)

做參考見this msdn page

0

嘗試

dtCurrDate=DateTime.Now.ToShortDateString(); 
1

您在要與當前日期的數據庫來比較日期您的意見說。只有兩種可能的方式來做到這一點:

  1. 在C#
  2. 在數據庫

C#
你必須從數據庫中選擇的值。你得到一個DateTime當你這樣做是正確,如:

using (SqlCommand cmd = new SqlCommand("SELECT DateColumn FROM Table", conn)) 
using (SqlDataReader reader = cmd.ExecuteReader()) 
{ 
    while (reader.Read()) 
    { 
     DateTime datecolumn = reader["DateColumn"] as DateTime? ?? DateTime.MinValue; 
     if (dateColumn.Date == DateTime.Now.Date) 
     { 
      ... 
     } 
    } 
} 

SQL
你需要傳遞的日期值SQL。這必須使用參數化查詢完成:

using (SqlCommand cmd = new SqlCommand("....", conn)) 
{ 
    cmd.Parameters.AddWithValue("@dateParameter", DateTime.Now.Date); 
    ... 
}  
+0

只有DateTime.Now.Date會工作? – Freelancer 2013-03-26 07:56:11

+0

'DateTime.Now.Date'實際上是當天和設置爲'00:00:00'的時間。當然,您需要相應地在SQL中進行比較。 – 2013-03-26 09:03:47

+0

是的,我爲此目的使用日期後的%,因爲在數據庫中時間也存在。 – Freelancer 2013-03-26 09:05:46