在Python中返回日期时间的毫秒表示

9
使用Python,我将一个日期和时间存储为datetime.datetime到GAE。有没有办法以毫秒为单位获取日期时间的值,而不是完整格式的字符串版本?
根据datetime.datetime的文档,我没有看到日期时间类上执行此操作的本机方法。http://docs.python.org/release/2.5.2/lib/datetime-datetime.html 原始日期值以这种方式存储:
date_time_float = 1015182600   #some date as timestamp
date_time_object = datetime.fromtimestamp(date_time_float);                                                

当我从商店中提取数据时,它的类型为:
type(exported_date_time) # type: datetime.datetime

有strftime可以将时间转换为字符串表示,但我想要的是将'exported_date_time'转换为毫秒。


1
你不能只是获取Unix时间戳然后乘以1000吗? - Jon Martin
@agf,你的回答正是我所说的。 - Jon Martin
1个回答

14

获取自纪元以来的秒数:

date_time_secs = time.mktime(datetimeobj.timetuple())

或者以毫秒为单位处理整个内容

date_time_milis = time.mktime(datetimeobj.timetuple()) * 1000 + datetimeobj.microsecond / 1000

或类似的。


time.mktime的参数是“struct_time或完整的9元组,它表示本地时间而不是UTC时间”。你如何将datetime.datetime转换为它? - Dan Holman
在文档中,符号“datetime.timetuple()”表示timetuple()datetime类(来自datetime模块)的一个实例方法;此外,mktime()返回Unix时间戳,即一个浮点数。此外,对于Dan来说,date_time_objectdatetime.datetime的一个实例。因此,表达式应该是:“unixtime = time.mktime(date_time_object.timetuple())”。 - eyquem
@agf 我之前写了一个令人困惑的评论,我已经删除了它。在我发新评论之前,我没有看到你的回答。现在我明白了:你认为datetime.timetuple()是_instance.timetuple()_符号的通用表示法,就像文档中所实践的那样。但我认为,这种通用表示法的使用必须限制在文档中,不应在实际代码中使用,否则会令人困惑。你进行了更正,这很好。但在我看来,将date_time_object作为浮点数的名称仍然存在缺陷。 - eyquem
好的。在发布之前,我应该更新页面..... 呃,顺便说一下...这些名称不再是非常不正确的,但它们仍然不连贯,我想.... - eyquem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接