Update
在
datetime
函数上使用
utcfromtimestamp
似乎是错误的(感谢@FObersteiner的评论)。你应该使用
fromtimestamp
来代替。所以你可以用下面的代码来代替底部的代码。请注意,
pytz
已被废弃。看来,
zoneinfo
可以完成
pytz
的工作。
from datetime import datetime
import pytz
tzHong = pytz.timezone('Hongkong')
tzGMT = pytz.timezone('Etc/GMT')
dateString = "1645704206000"
date = datetime.fromtimestamp(float(dateString)/1000, tz=tzGMT)
print("Date in Hongkong: " + date.astimezone(tz=tzHong).strftime("%m-%d-%y %I:%M"))
print("Date in GMT: " + date.strftime("%m-%d-%y %I:%M"))
Old Version
看起来,问题中存在一个与Excel的自然内部表示法有关的问题。但如果你对将时间戳(含毫秒)转换为字符串、人类可读的日期感兴趣,你可以使用python中的datetime
模块。
from datetime import datetime
import pytz
tzHong = pytz.timezone('Hongkong')
tzGMT = pytz.timezone('Etc/GMT')
dateString = "1645704206000"
date = datetime.utcfromtimestamp(float(dateString)/1000)
print("Date in Hongkong: " + date.astimezone(tz=tzHong).strftime("%m-%d-%y %I:%M"))
print("Date in GMT: " + date.astimezone(tz=tzGMT).strftime("%m-%d-%y %I:%M"))
Output
Date in Hongkong: 02-24-22 08:03
Date in GMT: 02-24-22 12:03
还要注意,你所显示的日期(2/24/22 12:03)是在格林威治时间区,而不是香港。这两个时区在上面的代码中都有显示。请确保哪一个适用于你所需的输出。另外,这个答案所提供的答案是12小时的时钟格式。如果你对24小时格式感兴趣,只需将上面代码中的%I
改为%H
。