我有一台Windows应用程序,在数百台计算机上使用。它从我的Sql Server获取日期作为字符串,并将此字符串转换为日期时间格式以计算一些日期时间差。 有时在某些系统上,我们在将字符串转换为Date时会出错。 “字符串未被识别为有效的DateTime”。
每台计算机的Windows DateTime设置都不一样,我们甚至不能强迫客户端使用一种格式。
现在如何在代码端处理这个问题?
答案 0 :(得分:1)
假设您的日期以一致的格式存储在SQL表中,您可以使用DateTime.Parse和显式格式字符串将字符串转换为日期时间。看到: http://msdn.microsoft.com/en-us/library/system.datetime.parseexact.aspx
答案 1 :(得分:1)
更改SQL Server返回的字符串格式。如果您使用YYYY-MM-DD格式作为日期,无论设置如何,转换都应正常工作。
另外,幸运的是,您将使用存储过程,甚至不必更新软件。
为什么要将日期时间作为字符串返回,但ADO.NET可以很好地处理它?</ p>
答案 2 :(得分:1)
如果可以,请在客户端和服务器上使用DateTime数据类型,您将完全避免这些问题。不应该在任何时候将日期存储为字符串。
如果这对您的应用程序中的make更改太大,请在DateTime.ParseExact调用中显式指定日期字符串的格式:
string databaseDateFormat = "yyyy-MM-dd HH:mm:ss.fff";
DateTime myDate = DateTime.ParseExact(myDateString,
databaseDateFormat,
CultureInfo.InvariantCulture);
答案 3 :(得分:0)
您需要知道日期字符串的创建方式,因为您可以使用DateTime.Parse方法,如下所示:
DateTime.Parse("2001-01-01", CultureInfo.GetCultureInfo("sv-SE"));
字符串是数据库中的日期,文化是已知的文化。