javascript - 在javascript中获取历史日期的时区

标签 javascript date datetime timezone momentjs

某项目的业务需求如下:

用户需要根据其本地时区查看历史日期。目前,我们在数据库中存储两个日期: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/

相关文章:

javascript - Canvas 与服务器生成的图形

javascript - 如何防止 JavaScript 日期构造函数接受无效日期?

r - 从R中的日期中删除年份

mysql - Yii2 基于 NOW() 的显示项目不显示日期本身

可以用科学记数法对表格进行排序的javascript库

javascript - Highcharts 如果标题包含数字,则显示无效数据

javascript - 在 Safari/Opera 上启用数据列表的脚本

javascript - 如何在 Highcharts 中显示日期时间轴的所有数据标签

sql - 如何在 Google Data Studio 中组合两个日期字段?

c# - 如何解析日期时间秒.ms