将datetime转换为POSIX时间

如何将date时间或date对象转换为Python中的POSIX时间戳? 有一些方法可以从时间戳中创build一个date时间对象,但是我似乎没有find任何明显的方式来完成相反的操作。

import time, datetime d = datetime.datetime.now() print time.mktime(d.timetuple()) 

对于UTC计算, calendar.timegmtime.gmtime的倒数。

 import calendar, datetime d = datetime.datetime.utcnow() print calendar.timegm(d.timetuple()) 

在python中,time.time()可以返回秒作为一个浮点数,包括一个微秒的十进制分量。 为了将date时间转换回这种表示forms,您必须添加微秒组件,因为直接时间组件不包含微秒组件。

 import time, datetime posix_now = time.time() d = datetime.datetime.fromtimestamp(posix_now) no_microseconds_time = time.mktime(d.timetuple()) has_microseconds_time = time.mktime(d.timetuple()) + d.microsecond * 0.000001 print posix_now print no_microseconds_time print has_microseconds_time 

请注意,Python现在(3.5.2)在datetime对象中包含一个内置的方法 :

 >>> import datetime >>> now = datetime.datetime.now() >>> now.timestamp() # Local time 1509315202.161655 >>> now.replace(tzinfo=datetime.timezone.utc).timestamp() # UTC 1509329602.161655