python函数返回javascript date.getTime()

use*_*803 5 javascript python datetime date gettime

我正在尝试创建一个简单的python函数,该函数将返回与javascript new Date().getTime()方法相同的值。如此处所述,javascript getTime()方法返回从1970年1月1日开始的毫秒数

所以我只是写了这个python函数:

def jsGetTime(dtime):
    diff = datetime.datetime(1970,1,1)
    return (dtime-diff).total_seconds()*1000
Run Code Online (Sandbox Code Playgroud)

而参数dtime是python datetime对象。

但是我得到了错误的结果。我的计算有什么问题?

Jef*_*eld 5

我不得不在这里指出一件事:如果您试图同步客户端时间和服务器时间,则需要将服务器时间传递给客户端并将其用作偏移量。否则,您的客户端/网络浏览器将在具有自己的时钟的各种计算机上运行,​​因此总是会有些不同步。但是,这是一种常见的模式,即使用纪元毫秒在客户端和服务器之间进行同步,以在统一的庄园中引用时间。

Python

import time, datetime

def now_milliseconds():
   return int(time.time() * 1000)

# reference time.time
# Return the current time in seconds since the Epoch.
# Fractions of a second may be present if the system clock provides them.
# Note: if your system clock provides fractions of a second you can end up 
# with results like: 1405821684785.2 
# our conversion to an int prevents this

def date_time_milliseconds(date_time_obj):
   return int(time.mktime(date_time_obj.timetuple()) * 1000)

# reference: time.mktime() will
# Convert a time tuple in local time to seconds since the Epoch.

mstimeone = now_milliseconds()

mstimetwo = date_time_milliseconds(datetime.datetime.utcnow())

# value of mstimeone
# 1405821684785
# value of mstimetwo
# 1405839684000
Run Code Online (Sandbox Code Playgroud)

Javascript

d = new Date()
d.getTime()
Run Code Online (Sandbox Code Playgroud)

有关javascript日期操作的更多参考,请参见这篇文章。