2011-10-26 89 views
4

我試圖挽救DateTime.Now格式爲「年月日」C#錯誤「字符串未被識別爲有效的DateTime」

我有這樣的代碼

string todaysDate = DateTime.Now.ToString(); 

...

U_Date_of_PD_added = GetDateFromString(todaysDate) 

// U_Date_of_PD_added是日期時間數據庫字段

...

//Method to get date from string 
private DateTime GetDateFromString(string dateString) 
{ 
    string format = "yyyyMMdd"; 
    return DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture); 
} 

我不斷收到錯誤「字符串未被識別爲有效的DateTime」。因爲它試圖解析。什麼可能是錯的?

我不在乎,如果這樣可以節省時間,我會更喜歡00:00:00.000

+2

可以顯示'dateString'的值嗎? –

+4

爲什麼要將日期時間轉換爲字符串?幾乎在每一個存在的數據訪問技術,您可以傳遞參數作爲自己正確的數據類型,並處理編組這些值到數據庫中,這樣你就不會有這種事情擺弄。 –

+0

http://stackoverflow.com/questions/7580809/parse-c-sharp-string-to-datetime –

回答

10

您還需要當你轉換日期爲字符串給格式字符串:

string todaysDate = DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture); 
1

DateTime.Now.ToString()會導致區域特定的格式,但它主要包含時間。這種格式被稱爲"General date/time pattern (long time)."

所以想用你的格式字符串解析它會失敗,因爲你的格式字符串不包含時間部分信息。

您可以使用DateTime.TryParse沒有提供格式字符串或你必須提供您的格式字符串您來電DateTime.Now.ToString爲好。

1

通過使用DateTime.Now.ToString(),不能將todaysDate的值轉換爲DateTime對象,因爲DateTime.Now.ToString()會生成使用默認日期格式(26-10-2011 14:02:31)的值。 嘗試,而不是這樣做:string todaysDate = DateTime.Now.ToString("yyyyMMdd");,你應該能夠將其轉換回使用GetDateFromString方法。

0

DateTime.Now.ToString("yyyyMMdd")將返回20110926.

2
DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture); 

字符串會給你當前的日期。請注意,CultureInfo.InvariantCulture是重要的。如果你不信任它,請嘗試:

var r = DateTime.Now.ToString("yyyyMMdd", new CultureInfo("ar-SA")); // 14321128 
var r2 = DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture); // 20111026 
+0

+1:「ar-SA」文化信息是一個很好的測試用例,我已經更新了我的答案。 –

2

首先你得到今天的日期,然後轉換成字符串如下,你就完成了。

DateTime today = DateTime.Today.Date; 
string date = today.ToString("yyyy/MM/dd"); 
+0

這甚至不是有效的代碼(你沒有有效的字符串文字)......除非你指定了文化,否則你可能會得到你不期望的結果。另外,請在發佈時注意格式。您的代碼不會顯示爲代碼... –

相關問題