在 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
关于javascript - Python 到 JavaScript unix 时间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25243922/