【发布时间】:2016-07-29 09:16:27
【问题描述】:
我将数据存储到 MySql 日期时间字段中,我总是从 C# 保存 UTC 日期(使用 someDate.ToUniversalTime())。
我在中欧时区。
我有一个日期保存在 08.03.2016 为 2016-04-07 16:00:00(事件当时设置在未来),该事件的正确当地时间是 2016-04-07 17 :00:00,所以当时保存为 GMT+1。我使用 someDate.ToLocalTime() 来获取正确的当地时间,并且效果很好。
今天(4 月),由于 3 月底发生的 DayLight 事件,我们有 GMT+2 偏移量,现在 someDate.ToLocalTime() 向我显示多 1 小时:2016-04- 07 18:00:00 这是不正确的。
如何普遍解决这个问题? 我想保存 UTC 时间(就像现在一样),然后应用一些使用用户当前时区的系统转换,并始终从我保存的 UTC 日期返回有关当前 DayLightSaving 状态的正确本地时间。 它还应该返回 2016-04-07 17:00:00 而不是 2016-04-07 18:00:00
【问题讨论】:
-
使用
TIMESTAMP而不是DATETIME,然后设置time_zone会话变量——MySQL会处理剩下的。 -
这是桌面应用还是网络应用?一般来说,只有桌面应用程序应该使用
ToLocalTime和ToUniversalTime。
标签: c# mysql utc timezone-offset localtime