使用python将datetime转换为整数进行NVD3绘图

2024-06-16 14:49:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python制作了一个NVD3图表,其中日期在x轴上。 我最近注意到,在一台机器上显示日期2017年3月,而在另一台时区为2017年2月的机器上显示日期2017年2月。你知道吗

我用过:

x = datetime(2017, 3, 1)
1000 * int(time.mktime(x.timetuple()))
1488355200000L

也尝试过:

1000*(x-datetime(1970,1,1)).total_seconds()
1488326400000.0

两人都休息一个月。 在javascript中,我尝试:

var x = new Date(2017 , 3, 1);
x.getTime();
1491030000000

这是一个更大的数字,所以它可能是正确的答案,但我不知道python中的等效值。 有人知道怎么纠正吗? 为什么在不同时区的不同机器上一个月出现的时间会不同呢?你知道吗


Tags: 机器newdatetimedatetimevar图表javascript
1条回答
网友
1楼 · 发布于 2024-06-16 14:49:40

在python中,datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0),参数month应该是1 <= month <= 12。你知道吗

你的代码x = datetime(2017, 3, 1),时间是2017-03-01 00:00:00,现在是三月。你知道吗

在JS中,new Date(year, month, day, hours, minutes, seconds, milliseconds),参数month应该是0 <= month <= 11。你知道吗

你的代码var x = new Date(2017, 3, 1);,时间是2017-04-01 00:00:00,现在是四月而不是三月。你知道吗

而且,在python中将秒转换为毫秒时,最好使用multiple float format 1000.0而不是int format。你知道吗


更新

为了让它工作,我不得不增加一天。这是一个边缘问题。它与浮点无关:

    A_DAY = 86400000
    xdata = A_DAY + 1000 * (x.replace(tzinfo=None)-datetime(1970,1,1)).total_seconds()

相关问题 更多 >