如何确保所有客户端都能正确解析数据库DateTime字符串?

时间:2009-07-16 20:10:19

标签: c# asp.net

我有一台Windows应用程序,在数百台计算机上使用。它从我的Sql Server获取日期作为字符串,并将此字符串转换为日期时间格式以计算一些日期时间差。 有时在某些系统上,我们在将字符串转换为Date时会出错。 “字符串未被识别为有效的DateTime”。

每台计算机的Windows DateTime设置都不一样,我们甚至不能强迫客户端使用一种格式。

现在如何在代码端处理这个问题?

4 个答案:

答案 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"));

字符串是数据库中的日期,文化是已知的文化。