Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从unix时间获取正确的日期时间值?_Python_Datetime_Unix Timestamp - Fatal编程技术网

Python 如何从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):

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):
     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