将 Microsoft 时间戳转换为 ISO 8601 日期时间格式

Convert Microsoft Timestamp to ISO 8601 Datetime format

最近我遇到了以前从未见过的新时间戳格式,它称为“Microsoft 时间戳”,意思是自 1899 年 12 月 31 日以来的天数。 我试图在网上搜索以查看 python 中是否有任何方法能够将此格式转换为 ISO 8601,反之亦然,但没有找到任何有用的方法。

即根据 https://www.silisoftware.com/tools/date.php?inputdate=43981.7155208333350&inputformat=microsoft 43981.715520833 指的是 2020-05-30T17:10:21+00:00

您可以使用 datetime 模块编写自己的函数:

from datetime import datetime, timedelta

def microsoft_to_iso8601(microsoft):
    base_date = datetime(1899, 12, 31)
    ret_date = base_date + timedelta(days=microsoft)
    return ret_date.isoformat()

print(microsoft_to_iso8601(43981.7155208333350))
# returns 2020-05-31T17:10:21

上面的函数创建一个 datetime.datetime 对象 base_date,它存储“Microsoft 时间戳”的基准日期:1899 年 12 月 31 日。

ret_date 是第一个日期加上自“Microsoft 时间戳”表示的该日期以来经过的天数。函数returns将这个日期转换成ISO-8601字符串。