【问题标题】:Unable to convert widows epoch time to normal date time无法将 Windows 纪元时间转换为正常日期时间
【发布时间】:2019-12-08 11:59:32
【问题描述】:

我正在尝试解析我的 Google Chrome 书签文件。

该文件中的条目有一个名为 date_added 的字段,其值类似于 13195047309383442

我无法将此时间转换为标准日期时间。

我尝试了以下方法:

import datetime
datetime.fromtimestamp(13195047309383442).strftime('%Y-%m-%d %H:%M:%S')

很遗憾,这会导致错误:OSError: [Errno 22] Invalid argument

我最初的反应是将时间除以 1000000,因为我发现 Windows 以微秒为单位存储纪元时间。结果如下:

datetime.fromtimestamp(13195047309383442/1000000).strftime('%Y-%m-%d %H:%M:%S')

'2388-02-19 21:55:09'

从上面可以看出年份字段不正确。

我哪里出错了,我该如何解决?

【问题讨论】:

    标签: python windows datetime epoch


    【解决方案1】:

    要将 Windows 时间戳转换为 Python datetime,您需要使用 Window epoch:

    代码:

    import datetime as dt
    windows_epoch = dt.datetime(year=1601, month=1, day=1)
    
    def datetime_from_window_ts(timestamp):
        return windows_epoch + dt.timedelta(seconds=timestamp/1e6)
    

    测试代码:

    print(datetime_from_window_ts(13195047309383442))
    

    结果:

    2019-02-19 10:55:09.383442
    

    【讨论】:

    • 如何将此输出转换为以下格式的 strftime 输出strftime('%Y-%m-%d %H:%M:%S')
    • 返回的值为datetime。只需将.strftime(...) 添加到返回值。所以datetime_from_window_ts(...).strftime(...)
    【解决方案2】:

    您使用了错误的时间来源。对于 Unix,它是 1970/1/1,对于 Windows,它是 1601/1/1 之类的。你可以试试他的代码:

    >>> microseconds = 13195047309383442
    >>> seconds, microseconds = divmod(microseconds, 1000000)
    >>> days, seconds = divmod(seconds, 86400)
    >>> datetime.datetime(1601, 1, 1) + datetime.timedelta(days, seconds, microseconds)
    datetime.datetime(2019, 2, 19, 10, 55, 9, 383442)
    

    【讨论】:

      【解决方案3】:

      您提到您正在尝试解析 Chrome 书签文件,但从我阅读的内容来看,Chrome 书签时间戳不使用 Unix 1970 日期。它使用 1601-01-1 日期(这就是为什么您的日期超过了您可能预期的 2019 年 2 月 19 日日期的原因)。

      查看此资源: http://fileformats.archiveteam.org/wiki/Chrome_bookmarks

      而且这个转换器工具,它实际上有一个 Python sn-p 是如何完成转换的。 https://www.epochconverter.com/webkit

      【讨论】:

        猜你喜欢
        • 2012-09-06
        • 2018-04-24
        • 2011-12-06
        • 2020-02-21
        • 2012-06-06
        • 2010-12-14
        • 2021-03-25
        • 2012-11-08
        • 2019-01-15
        相关资源
        最近更新 更多