在 JavaScript 中:
new Date(2014, 5, 1).getTime()
// results: 1401561000000
在 python 中:
import time
import datetime
time.mktime(datetime.datetime(2014, 5 , 1).timetuple())
# results -> 1398882600.0
如何将 python 时间转换为 JavaScript unix 时间戳?
请您参考如下方法:
让我们比较一下这两个结果:
- JavaScript:
1401561000– 2014 年 5 月 31 日 18:30:00 UTC(注意getTime()给出的是毫秒数,因此您需要除以 1000) - Python:
1398882600– 2014 年 4 月 30 日 18:30:00 UTC
所以其实有两个问题:
首先,在 JavaScript 中,月份索引从 0(0 = 一月)开始,而在 Python 中它从 1(1 = 一月)开始。这就是一个月抵消的来源。
第二个问题是由于时区。您的本地时间似乎是 UTC-05:30,这就是偏移量的来源。当您使用任何一种语言创建日期时,您始终使用本地时间,因此您的时区偏移量会被考虑在内。如果您想输入 UTC 日期,您也可以这样做。在 JavaScript 中,这很简单,感谢 Date.UTC :
Date.UTC(2014, 5, 1) / 1000 // 1401580800
Date.UTC(2014, 4, 1) / 1000 // 1398902400
然而,在 Python 中,它有点复杂,因为 datetime 对象默认时区未知,但 time.mktime 为传递的元组假定本地时间。要解决此问题,您可以通过明确指定时区或自行执行计算来使 datetime 对象感知:
>>> datetime.datetime(2014, 6, 1, tzinfo=timezone.utc).timestamp()
1401580800.0
>>> datetime.datetime(2014, 5, 1, tzinfo=timezone.utc).timestamp()
1398902400.0
>>> (datetime.datetime(2014, 6, 1) - datetime.datetime(1970, 1, 1)) / datetime.timedelta(seconds=1)
1401580800.0
>>> (datetime.datetime(2014, 5, 1) - datetime.datetime(1970, 1, 1)) / datetime.timedelta(seconds=1)
1398902400.0
