某项目的业务需求如下:
用户需要根据其本地时区查看历史日期。目前,我们在数据库中存储两个日期:UTC 和本地时间。用户需要查看(历史)时区的日期。
示例:
Database values: 2017-10-25T12:00:00 (UTC), 2017-10-25T09:00:00 (Date of registration).
根据这些值,我们希望用户查看其时区的日期。
2017-10-25T12:00:00 (UTC) to CEST (time zone offset +0200) => 2017-10-25T14:00:00.
但是,当用户在不适用夏令时的日期查看相同日期时,用户将看到 2017-10-25T13:00:00,因为 CET 为 +0100。
我正在寻找一种方法,可以获取 UTC 日期上用户区域设置与 UTC 的偏移量。
简而言之:获取用户本地时区历史日期的 UTC 偏移量。
编辑:接受 Moment.js 和 Moment_timezone.js 等库!
最佳答案
I'm looking for a way in which it is possible to get the offset from UTC for the user's locale on the UTC date.
var dt = new Date("2017-10-25T12:00:00Z");
var offset = dt.getTimezoneOffset();
(注意末尾的Z
)
尽管如此,人们确实想知道为什么需要偏移量。本地时间已由 dt
中的 Date
对象表示。
如果你想用 Moment 来做到这一点,那么你可以这样做:
var m = moment("2017-10-25T12:00:00Z");
或者,如果您不想添加 Z
,则创建 Moment 对象,如下所示:
var m = moment.utc("2017-10-25T12:00:00").local();
您可以从那里格式化时刻,或者根据需要调用 m.utcOffset()
。
您不需要 Moment-timezone,除非您打算反射(reflect)用户本地时区以外的某个时区。
关于javascript - 在javascript中获取历史日期的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46928170/