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

时间:2018-07-09 18:01:57

标签: d3.js timezone timezone-offset

我正在尝试使用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,在%Z参数上添加了timeParse,但这仍然不是我想要的:

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 个答案:

答案 0 :(得分:0)

您可能正在寻找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