javascript - Python 到 JavaScript unix 时间转换

标签 javascript python datetime

在 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

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

相关文章:

python - 如何将 PostgreSQL 的 "INSERT...ON CONFLICT"(UPSERT) 功能与 flask_sqlalchemy 一起使用?

javascript - 如何更新 Leaflet 弹出窗口中的内容?

javascript - HTML5 放置事件子级被阻止

尽管有分隔符参数,Javascript 连接输出带逗号的字符串

python - 将数据从 Excel 工作表 (openpyxl) 传输到数据库表 (dbf)

ruby-on-rails - 在 Rails 中添加日期时间时区?

javascript - 盒子后面奇怪的盒子阴影

jquery - Python 相当于 Javascript 的 jQuery 或 Node 的 cheerio?

R - 将日期值转换为正整数

javascript - 在 JavaScript 中检查日期是否在给定年份的 1 月 1 日之前