为啥我需要 00 时区偏移量才能在 d3v4 中正确显示值?

Posted

技术标签:

【中文标题】为啥我需要 00 时区偏移量才能在 d3v4 中正确显示值?【英文标题】:Why do I need a 00 time zone offset to display values correctly in d3v4?为什么我需要 00 时区偏移量才能在 d3v4 中正确显示值? 【发布时间】:2018-07-09 18:01:56 【问题描述】:

我正在尝试使用 d3 解析以下日期:

20-06-18 01-02-35
20-06-18 09-13-01

使用:

var parseTime = d3.timeParse("%d-%m-%y %H-%M-%S");

但是,console.log 向我显示了这些解析值:

Date 2018-06-19T23:02:35.000Z
Date 2018-06-20T07:13:01.000Z

哪些是关闭两个小时


好吧,我想,毕竟我坐在 CEDT 中,我可能应该添加一个偏移量。所以我在要解析的日期中添加了-02,在timeParse 参数中添加了%Z,但这仍然不是我想要的:

var parseTime = d3.timeParse("%d-%m-%y %H-%M-%S %Z");
parseTime("20-06-18 01-02-35 -02") // Date 2018-06-20T03:02:35.000Z
parseTime("20-06-18 09-13-01 -02") // Date 2018-06-20T11:13:01.000Z

长话短说,要求-00 偏移量给了我正确的值。但这对我来说似乎有点多余。为什么会这样?

编辑:只发生在 Firefox 中,Chrome 给了我

Wed Jun 20 2018 09:13:01 GMT+0200

还是不知道为什么。

【问题讨论】:

【参考方案1】:

您可能正在寻找d3.utcParse 而不是d3.parseTime 以避免使用本地时区:

var parser = d3.utcParse("%d-%m-%y %H-%M-%S");
console.log(parser("20-06-18 01-02-35"));
<script src="https://d3js.org/d3.v5.min.js"></script>

要返回字符串,您可以使用d3.utcFormat 而不是d3.timeFormat

【讨论】:

以上是关于为啥我需要 00 时区偏移量才能在 d3v4 中正确显示值?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我得到欧洲/柏林时区的偏移量 0:53?

为啥我会得到欧洲/柏林时区 0:53 的偏移量?

将其他时区转换为本地时区(偏移量)

Python pytz 时区转换返回的值与不同日期的时区偏移量不同

时区偏移数组的自定义排序

如何从时区名称中获取时区偏移量