【问题标题】:Returning millisecond representation of datetime in python在python中返回日期时间的毫秒表示
【发布时间】:2011-08-11 18:34:11
【问题描述】:

使用 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”转换为毫秒。

【问题讨论】:

  • 你不能直接获取 unix 时间戳并乘以 1000 吗?
  • @agf 你的回答正是我所说的。

标签: python google-app-engine


【解决方案1】:

获取自纪元以来的秒数:

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 转换成它?
  • @agf 在文档中,datetime.timetuple() 表示 timetuple() 是类 datetime 实例的方法(属于模块日期时间);此外,mktime() 返回一个 Unix 时间,一个浮点数。此外,对于 Dan,date_time_objectdatetime.datetime 的一个实例。那么表达式一定是:unixtime = time.mktime(date_time_object.timetuple())
  • @agf 我写了一个令人困惑的评论,我删除了它。在我的新评论之前,我没有看到你的答案。我现在明白了:您正在考虑将 datetime.timetuple() 作为 instance.timetuple() 表示法的通用表示,就像在文档中实践的那样。但我认为这种通用表示的使用必须限制在文档中,而不是在实际代码中使用,否则会令人困惑。你纠正了,那就更好了。但是 IMO ,剩余的名称 date_time_object 对于什么是浮点数仍然是一个缺陷
  • 好的。我应该在发布之前更新页面.....eeeerr,顺便说一下......这些名字几乎不正确,但它们仍然不连贯,我想......
猜你喜欢
  • 2015-07-03
  • 2019-12-09
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多