【问题标题】:highcharts datetime axis, how to comput correct timestamp?highcharts 日期时间轴,如何计算正确的时间戳?
【发布时间】:2013-11-18 00:12:10
【问题描述】:

假设我想绘制一个系列,其中第一个点表示 2013 年 11 月 5 日 11:30 的时间。如果我在不同时区的浏览器中查看我的图表,我希望时间 11:30 相同。因此我想要useUTC=true。现在,我如何计算要赋予 highcharts 的值(毫秒)?

我用这个 python 代码试过了:

>>> import datetime,time
>>> t=datetime.datetime(2013,11,5,11,30,00)
>>> time.mktime(t.timetuple())*1000
1383647400000.0

但是,如果我将值 1383647400000.0 插入到 highcharts 中,我会得到一个时间为 10:30 而不是 11:30 的点。

这是重现故障的代码:http://jsfiddle.net/2BffA/6/

我做错了什么?

【问题讨论】:

  • 对不起,对我来说 1383647400000 是 10.30 UTC,所以它显示正确吗?在服务器端创建 UTC 时间。这可能会有所帮助:stackoverflow.com/questions/15940280/utc-time-in-python
  • 那么,关键可能在python代码中...... time.mktime是否依赖于本地时间?
  • 然而,time.mktime() 来自当地时间,请参阅SO 的另一个答案。

标签: python datetime highcharts timezone


【解决方案1】:

问题出在 python 代码中...构造 2013 年 11 月 5 日 11:30 的 UTC 时间戳的正确方法是

>>> import datetime, calendar
>>> t=datetime.datetime(2013,11,5,11,30,00)
>>> calendar.timegm(t.utctimetuple())*1000.0 + t.microsecond * 0.0011383651000000.0
1383651000000.0

如果 useUTC=true,这是发送到 highcharts 的正确时间戳

【讨论】:

  • 您的代码格式错误,无法执行。 0.0011383651000000.0\n1383651000000.0 应该是什么意思?
  • @Cerin 显示的代码是交互式外壳。最后一行是上一条命令的结果。
  • 或使用python3.8 dt.timestamp() * 1000
猜你喜欢
  • 2013-08-02
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
相关资源
最近更新 更多