将日期,日期时间转换为时间戳

时间:2010-05-03 00:14:51

标签: datetime python-3.x python

如何从Python中的datedatetime生成毫秒精度的时间戳?

有大量的方法和方法可以做到这一点,我想知道哪种方式和Pythonic方式最多。

3 个答案:

答案 0 :(得分:9)

以下内容适用于我的目的:

从毫秒时间戳开始的日期时间

import datetime
timestamp #=> 1317912250955
dt = datetime.datetime.fromtimestamp(time/1000.0)
dt #=> datetime.datetime(2011, 10, 6, 10, 44, 10, 955000)

从日期时间到毫秒时间戳

import time
dt #=> datetime.datetime(2011, 10, 6, 10, 44, 10, 955000)
timestamp = int((time.mktime(dt.timetuple()) + dt.microsecond/1000000.0)*1000)
timestamp #=> 1317912250955

答案 1 :(得分:2)

Python中的

日期对象不保留wallclock时间的概念。如果你想获取一个日期对象并获得毫秒的表示,那么它将全部为0。

datetime模块跳过毫秒并在其格式化中支持微秒。因此,当您打印日期时间或在解释器中看到一个时,最后一个字段是微秒。如果你想要毫秒,你可以将该字段除以1000.

以下是Python 3.2b2解释器会话中的几个示例。这里有一些额外的东西,所以你可以看到我用来获取时间戳的基本路线。它不能被视为reading the docs的替代品:

>>> x = datetime.datetime.today()
>>> y = datetime.date.today()
>>> x
datetime.datetime(2011, 2, 6, 8, 2, 9, 465714)
>>> y
datetime.date(2011, 2, 6)
>>> y.strftime('%Y-%m-%d.%f')
'2011-02-06.000000'
>>> x
datetime.datetime(2011, 2, 6, 8, 2, 9, 465714)
>>> str(x)
'2011-02-06 08:02:09.465714'
>>> x.microsecond
465714
>>> x.time()
datetime.time(8, 2, 9, 465714)
>>> x.time().microsecond/1000
465.714   # milliseconds and microseconds.
>>> int(x.time().microsecond / 1000)
465  # milliseconds
>>> s = '{:02d}:{:02d}:{:02d}.{:3d}'.format(r.hour, r.minute, r.second, int(r.microsecond / 1000), '2s')
>>> s
'08:02:09.465'

答案 2 :(得分:0)

什么是最pythonic的方式取决于你说“时间戳”时你想要什么。数字还是字符串?

对于字符串,d.isoformat()是最简单的。对于你做的数字:

time.mktime(d.timetuple()) + d.microsecond/1000000.0

这是假设datetime个对象。当你说你想要date个物体的毫秒精度时间戳时,我不确定你的意思。 date个对象甚至没有秒,更少的毫秒。 : - )