我有一个网站,位于 server1 上。它使用位于 server2 上的 Web 服务。Web 服务使用位于 server3 上的数据库。
Server1 server2 和 server3 有不同的时区,所以当我通过 web 服务获取数据表时,Datetime 类型列具有不同的时间值。
例如,
如果在数据库中我有记录(日期类型)'2010-03-24-12:00:00',在网站上我得到'2010-03-24-13:00:00'
我试图更改列的“DateTimeMode”,但问题没有解决。
我有一个网站,位于 server1 上。它使用位于 server2 上的 Web 服务。Web 服务使用位于 server3 上的数据库。
Server1 server2 和 server3 有不同的时区,所以当我通过 web 服务获取数据表时,Datetime 类型列具有不同的时间值。
例如,
如果在数据库中我有记录(日期类型)'2010-03-24-12:00:00',在网站上我得到'2010-03-24-13:00:00'
我试图更改列的“DateTimeMode”,但问题没有解决。
根据经验,我总是将日期时间值作为 UTC 存储在我的数据库中,并留给客户端根据其关联的时区进行相应调整。.NET 3.5 使这种时区调整变得非常容易。
序列化 DateTime 和 WCF 存在问题。
最好的解决方案是始终将 DateTime 作为 UTC 存储在数据库中。然后在从 SQL 读取 DateTime 时,始终使用 DateTime.Specify 来指定 DateTimeKind.Utc。
使用世界时或格林威治标准时间应该可以解决这个问题。