Python 如何从unix时间获取正确的日期时间值?
UNIX时间戳Python 如何从unix时间获取正确的日期时间值?,python,datetime,unix-timestamp,Python,Datetime,Unix Timestamp,UNIX时间戳 1262304000 1224633600 940636800 939772800 1332288000 1096934400 1088121600 ... 1.试试看 frmt_date = dt.datetime.utcfromtimestamp(1088121600).strftime("%Y/%m/%d %H:%M") 时间值的结果为00:00 (结果) 试一试 def xldate_to_datetime(xldate):
1262304000
1224633600
940636800
939772800
1332288000
1096934400
1088121600
...
1.试试看
frmt_date = dt.datetime.utcfromtimestamp(1088121600).strftime("%Y/%m/%d %H:%M")
时间值的结果为00:00
(结果)
def xldate_to_datetime(xldate):
temp = dt.datetime(1899, 12, 30)
delta = dt.timedelta(days=xldate)
return temp+delta
ts = "1262304000"
tsxl = ((int(ts)/60)/60)/24 + 25569
readabledate = xldate_to_datetime(tsxl)
print(readabledate)
00:00
我怎样才能从那些UNIX中获得适当的时间转换都是正确的 时间戳都恰好是从1970年1月1日午夜开始的秒,其
mod(3600*24)
为0,即所有时间戳对应于UTC中某个日期的午夜
您可以通过以下方式快速确认这一点,而无需实际转换为datetime对象:
assert all(t % 86400 == 0 for t in timestamps)
另一种方法
>>> mytime = 1332288000
>>> import datetime as dt
>>> frmt_date = dt.datetime.utcfromtimestamp(mytime).strftime("%Y/%m/%d %H:%M")
>>> print(frmt_date)
2012/03/21 00:00
>>> mytime = mytime + 10000
>>> frmt_date = dt.datetime.utcfromtimestamp(mytime).strftime("%Y/%m/%d %H:%M")
>>> print(frmt_date)
2012/03/21 02:46
所以,你的约会时间确实是00:00如果你所有的时间戳都对应于格林威治标准时间00:00,那么你得到00:00的时间也就不足为奇了。你的问题到底是什么?你似乎很确定这些结果是错误的。您还期望得到什么结果?结果与值相对应。您可以检查它:dt.datetime.utcfromtimestamp(dt.datetime.now().timestamp()).strftime(“%Y/%m/%d%H:%m”),谢谢大家!旁注:根据wikiepdia页面的闰秒:86400秒/天是由于POSIX标准,但与UTC日期不一致。自1970年以来,有很多闰秒,因此我对精确的UTC午夜日期表示的86400秒/天检查的一致性表示怀疑。(也许我想得太多了)@Lonewander True。UTC严格地在增加,而Unix时间却没有增加。然而,由于闰秒在编程中不适用于确定性时间戳,Unix有一个轻微的调整来帮助管理这一点:Unix时间不是UTC的真实表示,因为UTC中的闰秒与之前的秒共享相同的Unix时间。所以86400应该在这里工作得很好。
>>> mytime = 1332288000
>>> import datetime as dt
>>> frmt_date = dt.datetime.utcfromtimestamp(mytime).strftime("%Y/%m/%d %H:%M")
>>> print(frmt_date)
2012/03/21 00:00
>>> mytime = mytime + 10000
>>> frmt_date = dt.datetime.utcfromtimestamp(mytime).strftime("%Y/%m/%d %H:%M")
>>> print(frmt_date)
2012/03/21 02:46