【问题标题】:converting 13-digit unixtime in ms to timestamp in python将 ms 中的 13 位 unixtime 转换为 python 中的时间戳
【发布时间】:2018-09-17 13:18:39
【问题描述】:

我想以毫秒为单位的 13 位 Unix 时间转换为时间戳:

"1523126888080"==>> %Y-%m-%d %H:%M:%S

我已经从link 尝试了以下代码,
但我认为这是 10 位 Unix 时间,而我有 13 位 Unix 时间。所以,

这段代码可以运行,但是给出了错误的结果和错误的时间:

import time
time.strftime("%D %H:%M", time.localtime(int("1523126888080".strip()[0:9])))

Output: '1974-10-30 02:34:48'
Expected: '2018-04-08 12:18:08'

但是这个给出错误:

import time
time.strftime("%D %H:%M", time.localtime(int("1523126888080")))

Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
time.strftime("%D %H:%M", time.localtime(int("1523126888080")))
OSError: [Errno 22] Invalid argument

【问题讨论】:

    标签: python-3.x datetime


    【解决方案1】:

    您有一个精确到毫秒的时间戳,因此首先将其除以1000,然后将其提供给本地时区的datetime.datetime.fromtimestamp()(或将目标时区的datetime.tzinfo 作为第二个参数传递)或datetime.datetime.utcfromtimestamp() 用于UTC。最后,使用datetime.datetime.strftime() 将其转换为所需格式的字符串。

    import datetime
    
    timestamp = "1523126888080"
    your_dt = datetime.datetime.fromtimestamp(int(timestamp)/1000)  # using the local timezone
    print(your_dt.strftime("%Y-%m-%d %H:%M:%S"))  # 2018-04-07 20:48:08, YMMV
    

    【讨论】:

      【解决方案2】:

      尝试将1523126888080 除以1000 以获得有效的时间戳。
      您还应该使用%d 而不是%D 作为strftime 的参数,即:

      import time
      ts = 1523126888080 / 1000
      print(time.strftime("%d %H:%M", time.localtime(ts)))
      # 29 21:04
      

      【讨论】:

      • 如果我需要获取给定“1523126888080”之前和之后 300 毫秒的时间戳,那么只需将值“300000”减去并添加到给定的时间戳?如何使用 python 代码做到这一点?
      • 请打开一个新问题并将链接粘贴到此处,我会尽力帮助您。
      • 我在这里发了一个问题:stackoverflow.com/questions/59063039/…你能回答吗?
      猜你喜欢
      • 1970-01-01
      • 2020-05-04
      • 2018-05-20
      • 2021-03-09
      • 2018-08-21
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      相关资源
      最近更新 更多