【发布时间】:2010-09-30 11:10:05
【问题描述】:
我正在使用连接到美国远程数据库的客户端应用程序。结果中出现了一些日期时间歧义,例如数据库中的日期是否为 1 月 14 日,它返回为 1 月 13 日。
我想知道如果我将客户端的 CurrentCultureInfo 设置为等于我的服务器将解决问题。
如果可以的话..我想要一个相同的小例子。
【问题讨论】:
标签: c# .net datetime cultureinfo
我正在使用连接到美国远程数据库的客户端应用程序。结果中出现了一些日期时间歧义,例如数据库中的日期是否为 1 月 14 日,它返回为 1 月 13 日。
我想知道如果我将客户端的 CurrentCultureInfo 设置为等于我的服务器将解决问题。
如果可以的话..我想要一个相同的小例子。
【问题讨论】:
标签: c# .net datetime cultureinfo
您的文化用于格式化。您似乎遇到的问题是不同时区之一。
我对此的简单解决方案是始终以 UTC 存储日期和时间。您可以从客户端使用 DateTime.UtcNow,如果需要,您可以稍后将其转换回本地时间。
【讨论】:
问题是美国本身有几个不同的时区,所以这不是一个解决方案。我能想到的一种解决方法是将客户端计算机的时区设置为服务器的时区,但这听起来不太对。
【讨论】:
如果您无法将存储日期更改为 UTC 时间并在插入和选择数据时来回转换。那么除非你的数据被插入到服务器上,否则你将不得不记录一些东西来告诉你数据来自哪里(我的意思是插入数据的客户端的本地时区)。
如果您的数据只是在服务器上插入,那么您可能可以使用 SQL 函数 GetUTCDate 并将其与 GetDate 进行比较,然后从存储在数据库中的日期时间中减去结果。然后在客户端使用 DateTime.ToLocalTime() 将返回值转换为本地时间。正如我所说,这仅在数据专门插入服务器或至少由同一时区的客户端插入时才有效。不然算了。
【讨论】: