2012-02-13 52 views

回答

1

嘗試使用ParseExactTryParseExact

string pattern = "MMM ddd d HH:mm yyyy"; 
DateTime parsedDate; 
DateTime.TryParseExact(dateValue, pattern, null, DateTimeStyles.None, out parsedDate); 
2

您可以使用精確解析:

DateTime dtLogTime = DateTime.ParseExact(sLogTime, "MMM ddd d HH:mm yyyy", CultureInfo.CurrentCulture); 

只要確保你使用的讀取和寫入一致的文化信息。人們經常使用CultureInfo.InvariantCulture作爲內部格式,用戶永遠不會看到哪些是英語,但不是國家特定的。

1
DateTime dt; 
string Temp1 = "Your Date"; 
if (DateTime.TryParse(Temp1, out dt)) 
{ 
    cmd.Parameters.Add(new SqlParameter("@logDateTime", dt)); 
} 
else 
    cmd.Parameters.Add(new SqlParameter("@logDateTime", DateTime.Now)); 
2

正如其他人所說,使用DateTime.ParseExactDateTime.TryParseExact,可能與不變的文化。但是,您還應該注意日誌所處的時區。適當地使用DateTimeStyles.AssumeUniversalDateTimeStyles.AssumeLocal,或者可能都不使用DateTimeStyles.AssumeUniversalDateTimeStyles.AssumeLocal。從根本上說,DateTime對此有點棘手,並且您可以輕鬆完成錯誤的任務。您應該確保您傳遞到數據庫的DateTime採用UTC。

解析部分的一種替代方法是使用Noda Time,它提供了一些關於如何解析等的更清晰(IMO)等。然後,您可以將其轉換爲適當的DateTime以傳遞到您的數據庫。