我试图创建一个简单的python函数,它将返回与javascriptnew Date().getTime()
方法相同的值。
如here所写,javascript getTime()方法返回1970年1月1日起的毫秒数
所以我简单地编写了这个python函数:
def jsGetTime(dtime):
diff = datetime.datetime(1970,1,1)
return (dtime-diff).total_seconds()*1000
而参数dtime是python datetime对象。
但我得到了错误的结果。我的计算有什么问题?
Javascript的日期不能像您期望的那样工作。但您的python代码是正确的。
根据The epoch time listing,2010年1月1日的纪元时间应该是
Python:(似乎正确)
Javascript(似乎是错误的)
或者
这是因为Javascript日期并不像您期望的那样创建日期。首先,它在当前时区而不是UTC中创建日期。因此javascript中的“get current time”将是客户端时间,而python将返回utc时间。还要注意,JS Date中有一个bug,其中月份实际上是基于0而不是基于1的。
Javascript可以从纪元时间创建日期:
这是正确的。
或者您可以使用下面的JS函数来获得更准确的时间请注意,月份仍然从0开始,而不是从1开始
我不得不在这里指出一件事: 如果试图同步客户端时间和服务器时间,则需要将服务器时间传递给客户端并将其用作偏移量。否则,您总是会有点不同步,因为您的客户机/web浏览器将在具有自己时钟的各种计算机上运行。然而,使用epoch毫秒来同步客户端和服务器之间的时间,这是一种常见的模式。
Python
Javascript
有关javascript date manipulation的更多参考,请参阅本文。
相关问题 更多 >
编程相关推荐