Python Unix 时间在 Javascript 中不起作用
在Python中,使用calendar.timegm(),我得到了unix时间戳的10位数字结果。 当我将其放入 Javscript 的 setTime() 函数中时,它会显示 1970 年的日期。它显然需要一个 13 位数字长的 unix 时间戳。 怎么会发生这种事呢? 他们都是从同一天开始算的吗?
如何在这两种语言之间使用相同的 unix 时间戳?
在 Python 中:
In [60]: parseddate.utctimetuple()
Out[60]: (2009, 7, 17, 1, 21, 0, 4, 198, 0)
In [61]: calendar.timegm(parseddate.utctimetuple())
Out[61]: 1247793660
在 Firebug 中:
>>> var d = new Date(); d.setTime(1247793660); d.toUTCString()
"Thu, 15 Jan 1970 10:36:55 GMT"
In Python, using calendar.timegm(), I get a 10 digit result for a unix timestamp. When I put this into Javscript's setTime() function, it comes up with a date in 1970. It evidently needs a unix timestamp that is 13 digits long. How can this happen? Are they both counting from the same date?
How can I use the same unix timestamp between these two languages?
In Python:
In [60]: parseddate.utctimetuple()
Out[60]: (2009, 7, 17, 1, 21, 0, 4, 198, 0)
In [61]: calendar.timegm(parseddate.utctimetuple())
Out[61]: 1247793660
In Firebug:
>>> var d = new Date(); d.setTime(1247793660); d.toUTCString()
"Thu, 15 Jan 1970 10:36:55 GMT"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
timegm 基于 Unix 的 gmtime() 方法,该方法返回自 1 月 1 日以来的秒数, 1970 年。Javascript
setTime() 方法是自该日期以来的毫秒数。 您需要将秒数乘以 1000 才能转换为 Javascript 所需的格式。
timegm is based on Unix's gmtime() method, which return seconds since Jan 1, 1970.
Javascripts setTime() method is milliseconds since that date. You'll need to multiply your seconds times 1000 to convert to the format expected by Javascript.
以下是我用来与 javascript/datetime 相互转换的几个 python 方法。
在 JavaScript 中你会这样做:
Here are a couple of python methods I use to convert to and from javascript/datetime.
In javascript you would do:
您是否可能混淆了 1970 年以来的秒数和 1970 年以来的毫秒数?
Are you possibly mixing up seconds-since-1970 with milliseconds-since-1970?
JavaScript 日期构造函数 使用毫秒,您应该乘以 Python unix 时间1000。
JavaScript Date constructor works with milliseconds, you should multiply the Python unix time by 1000.