Skip to main content
 首页 » 编程设计

javascript之Python 到 JavaScript unix 时间转换

2024年10月25日34pengyingh

在 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 时间戳?

请您参考如下方法:

让我们比较一下这两个结果:

  1. JavaScript:1401561000 – 2014 年 5 月 31 日 18:30:00 UTC(注意 getTime() 给出的是毫秒数,因此您需要除以 1000)
  2. 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