我之前根据存储在用户个人资料中的时区在我的应用中实施了日期。据我所知,这在最初实施时正常工作。
我显示的数据库中存储的所有日期都是UTC,这意味着当我保存日期时(在C#中),我使用DateTime.UtcNow
。
以下是我在Angular中使用的momentjs代码,用实际值渲染我的日期:
moment.utc('2016-05-16T19:14:06.51').utcOffset('-05:00:00').format('M/D/YYYY h:mma');
-05:00:00
偏移量适用于东部时间。我期待上面指定的UTC日期导致下午3:15的显示,而是显示下午2:15。
要仔细检查我没有使用错误的日期值,我进入了MS SQL Management Studio并运行了返回SELECT GETUTCDATE()
的{{1}}。现在是下午3点44分,但它正在使用上面的momentjs代码渲染下午2:44。
发生了什么事?我错过了一些处理夏令时的时刻代码吗?
答案 0 :(得分:0)
一些事情:
-05:00:00
不是时区,而是偏移量。请阅读the timezone tag wiki中的“时区!=偏移”。utcOffset
始终设置相同的固定偏移量,因此您收到的值对于该偏移量是正确的。使用moment-timezone插件,您可以使用the tzdb中的America/New_York
标识符指定东部时间。您更新的代码如下:
moment.utc('2016-05-16T19:14:06.51').tz('America/New_York').format('M/D/YYYY h:mma');