如何在 Python 中将 100 纳秒 Gregorian bigint 值转换为日期时间?

问题描述

所以我有一个 bigint 值,表示自公历中的 12:00:00 midnight,January 1,0001 以来经过的 100 纳秒间隔数。

一个例子是637564207744054251。我在 Postgresql 中找到了这个和其他类似的值,我需要使用 Python 将其转换为 MM/DD/YYYY HH:MM:SS 格式。

谁能帮我弄清楚如何做到这一点?

解决方法

结合使用datetimetimedelta

from datetime import datetime,timedelta

duration_ns = 637564207744054251 * 100 # number of 100-nanosecond intervals
duration = timedelta(microseconds=duration_ns / 1000)

start = datetime(1,1,0)
end = start + duration

end_str = end.strftime('%m/%d/%y %H:%M:%S')
print(end_str)  # 05/12/21 12:52:54