【问题标题】:Python datetime to microtimePython 日期时间到微时间
【发布时间】:2011-11-06 11:36:00
【问题描述】:

我环顾四周,似乎有很多技巧,但没有简单的“好”方法可以做到这一点。我想将 Python datetime 对象转换为微时间,例如 time.time() 返回 (seconds.microseconds)。

最好的方法是什么?使用mktime() 完全去除微秒,您可以想象建立一个timedelta,但这似乎不正确。您也可以使用float(strftime("%s.%f"))(正确计算四舍五入的秒数),但这似乎是一个超级黑客。

这样做的“正确”方法是什么?

【问题讨论】:

    标签: python datetime epoch


    【解决方案1】:
    time.mktime(dt.timetuple()) + dt.microsecond / 1000000.0 
    

    如果您不想使用 strftimefloat,则可以使用。

    它返回与time.time()dt = datetime.datetime.now() 相同的内容。

    【讨论】:

    • 如果 datetime 对象的时区和您的本地时区可能不同,您应该改用 calendar.gmtime(dt.utctimetuple())
    • 我认为您的意思是 calendar.timegm,这给出了与 Mark 的版本相同的答案——这意味着它对于非 UTC datetime 对象是不正确的。对我来说,自纪元以来的时间与 UTC 中某人的时间相同,与我的 UTC 偏移量没有什么不同。
    • 无论您的时区如何,它总是正确的,因为 dt.utctimetuple 以 UTC 格式返回 datetime 对象的时间元组。而 calendar.timegm 需要一个 utc 时间元组。
    • 你试过了吗? time.time()calendar.timegm(datetime.datetime.now().utctimetuple()) 对于非 UTC 时区,自纪元以来的时间不同,而无论您在谈论什么时区,自纪元以来已经过去了相同的时间,因为纪元是 UTC time.time() 以 UTC 格式返回时间。
    • 我明白了。我在我的网站上使用 calendar.timegm。它工作得很好,因为我的日期时间对象带有 tzinfo。并且似乎 datetime.datetime.now() 返回的 datetime 对象不包含 tzinfo,因此 utctimetuple 没有返回正确的结果(在缺少 tzinfo 的情况下,utctimetuple 返回与 timetuple 相同的结果)
    【解决方案2】:
    def microtime(dt):
        unixtime = dt - datetime.datetime(1970, 1, 1)
        return unixtime.days*24*60*60 + unixtime.seconds + unixtime.microseconds/1000000.0
    

    【讨论】:

    • 这与time.time()datetime.datetime.now() 不同。看起来您假设 dt 是 UTC,因此您将偏离时区的 UTC 偏移量。
    • @agf,time.time() 是什么?我在文档中找不到它:docs.python.org/library/datetime.html
    • 不是datetime.time, time.time() -- docs.python.org/library/time.html#time.time
    • @agf:“应该有一种——最好只有一种——明显的方法”。我以前从不知道time。你是对的,我的解决方案假设你正在传递一个 UTC 日期时间。
    • 我同意这是一团糟。我在编写 PyFeed 时编写了自己的函数来处理它。 home.avvanta.com/~steveha/pyfeed.html
    【解决方案3】:

    进口时间;

    微时间=int(time.time()*1000);

    打印微时;

    【讨论】:

    • 为什么你的语句后面有分号?
    猜你喜欢
    • 2019-03-04
    • 2017-05-31
    • 2011-09-18
    • 2015-04-25
    • 2012-02-04
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    相关资源
    最近更新 更多