gpt4 book ai didi

python将1970年之前的日期的文件时间转换为日期时间

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:00 44 4
gpt4 key购买 nike

我需要将文件时间转换为日期时间。我正在使用此代码 filetime.py , 来自 here如本主题所述Datetime to filetime (Python) .

在代码中

EPOCH_AS_FILETIME = 116444736000000000  # January 1, 1970 as MS file time
HUNDREDS_OF_NANOSECONDS = 10000000

def filetime_to_dt(ft):
"""Converts a Microsoft filetime number to a Python datetime. The new datetime object is time zone-naive but is equivalent to tzinfo=utc.

>>> filetime_to_dt(116444736000000000)
datetime.datetime(1970, 1, 1, 0, 0)
"""
# Get seconds and remainder in terms of Unix epoch
(s, ns100) = divmod(ft - EPOCH_AS_FILETIME, HUNDREDS_OF_NANOSECONDS)
# Convert to datetime object
dt = datetime.utcfromtimestamp(s)
# Add remainder in as microseconds. Python 3.2 requires an integer
dt = dt.replace(microsecond=(ns100 // 10))
return dt

datetime.utcfromtimestamp 在 Windows 系统上不取负值,所以我无法转换 1970 年 1 月 1 日之前的文件时间。但我可以使用完全相同的代码在 Mac 上转换 1970 年之前的日期(原因here)。 Windows有任何解决方法吗?

最佳答案

通过将 timedelta 添加到引用日期,您可以使用任何您喜欢的日期公式。 timedelta 可以是正数也可以是负数。

def filetime_to_dt(ft):
us = (ft - EPOCH_AS_FILETIME) // 10
return datetime(1970, 1, 1) + timedelta(microseconds = us)

关于python将1970年之前的日期的文件时间转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38878647/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com