为啥我需要 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 中正确显示值?的主要内容,如果未能解决你的问题,请参考以下文章