2012-02-13 32 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以传递到您的数据库。