Javascript D3.js具有“11 PM”值的时间刻度怪癖

Javascript D3.js具有“11 PM”值的时间刻度怪癖,javascript,d3.js,Javascript,D3.js,在使用d3.time.scale时,我看到了一些关于记号格式的有趣行为 当从月放大到天时,有时我会将轴中的日期格式设置为%H%p,例如,它会渲染为晚上11点,而不显示日期。这表现为: 星期三11 |星期五13 |晚上11点|晚上11点|晚上11点 我使用的数据集具有日粒度,没有时间信息。我本希望%a%d,这将使Sat达到15。实际上,一些记号确实显示了正确的格式,而另一些则没有 有没有办法避免这种怪癖 我至少在迈克·博斯托克的两个街区里看到了这种怪癖:,或者 我在线程d3js:time scal

在使用d3.time.scale时,我看到了一些关于记号格式的有趣行为

当从月放大到天时,有时我会将轴中的日期格式设置为%H%p,例如,它会渲染为晚上11点,而不显示日期。这表现为:

星期三11 |星期五13 |晚上11点|晚上11点|晚上11点

我使用的数据集具有日粒度,没有时间信息。我本希望%a%d,这将使Sat达到15。实际上,一些记号确实显示了正确的格式,而另一些则没有

有没有办法避免这种怪癖

我至少在迈克·博斯托克的两个街区里看到了这种怪癖:,或者


我在线程d3js:time scaling和“1901”中看到,可以向轴添加tickFormat属性,从而覆盖正常格式。这里的问题是,我希望将缩放格式从几年保持到几天。我不知道如何传递格式列表,甚至在某些情况下仅覆盖格式。

正如@Lars Kotthoff指出的,这是一个时区问题。我使用的数据既没有时区信息,也没有时间信息,例如2000年8月15日,错误出现在DST期间的更改日期

为了纠正这个问题,在我的例子中,我将x刻度从:

d3.时间刻度,至

d3.time.scale.utc


链接中建议的此更改似乎解决了问题。

之所以出现此问题,是因为解析日期的时区与浏览器中设置的时区不同。有关此问题的解释和解决方案,请参阅。

听起来像是时区问题,请参阅@Larskothoff您完全正确!!