4 题: 将python datetime转换为时间戳,以毫秒为单位

在...创建的问题 Fri, Jan 13, 2017 12:00 AM

如何将格式为20.12.2016 09:38:42,76的人类可读时间转换为毫秒的Unix时间戳?我发现了很多类似的问题,但没有找到这个具体的问题/答案。

    
24
  1. 您需要为datetime.datetime.strptime提供适当的格式字符串。请参阅文档
    2017-01-13 13:27:43Z
  2. 醇>
    4个答案                              4 跨度>                         

    在Python 3中,这可以分两步完成:

    1. 将timestring转换为datetime对象
    2. datetime对象的时间戳乘以1000,将其转换为毫秒。
    3. 醇>

      例如:

       
      from datetime import datetime
      
      dt_obj = datetime.strptime('20.12.2016 09:38:42,76',
                                 '%d.%m.%Y %H:%M:%S,%f')
      millisec = dt_obj.timestamp() * 1000
      
      print(millisec)
      

      输出:

       
      1482223122760.0
      

      strptime接受您的时间字符串和格式字符串作为输入。 timestring(第一个参数)指定您实际想要转换为datetime对象的。格式字符串(第二个参数)指定您传递的字符串的实际格式

      以下是中格式说明符的说明官方文件

    •  %d - 作为零填充十进制数的月中的某一天。
    •  %m - 月份为零填充十进制数。
    •  %Y - 以世纪为十进制数的年份
    •  %H - 小时(24小时制)作为零填充十进制数。
    •  %M - 作为零填充十进制数的分钟。
    •  %S - 秒为零填充十进制数。
    •  %f - 微秒为十进制数,左边为零填充。
    31
    2017-12-20 23:03:13Z
    1. 嘿,谢谢。不幸的是我收到错误“AttributeError:'datetime.datetime'对象没有属性'timestamp'”。可能是因为我使用的是Python 2.7?
      2017-01-13 14:05:27Z
    2. 是的。使用MYGz的Python 2.7
      的答案
      2017-01-13 14:08:18Z
    3. 醇>

    对于Python2.7 - 将MYGz的答案修改为不剥离毫秒:

     
    from datetime import datetime
    
    d = datetime.strptime("20.12.2016 09:38:42,76", "%d.%m.%Y %H:%M:%S,%f").strftime('%s.%f')
    d_in_ms = int(float(d)*1000)
    print(d_in_ms)
    
    print(datetime.fromtimestamp(float(d)))
    

    输出:

     
    1482248322760
    2016-12-20 09:38:42.760000
    
        
    8
    2018-05-07 22:34:26Z

    您需要使用 strptime来解析您的时间格式一>

     
    >>> import time
    >>> from datetime import datetime
    >>> ts, ms = '20.12.2016 09:38:42,76'.split(',')
    >>> ts
    '20.12.2016 09:38:42'
    >>> ms
    '76'
    >>> dt = datetime.strptime(ts, '%d.%m.%Y %H:%M:%S')
    >>> time.mktime(dt.timetuple())*1000 + int(ms)*10
    1482223122760.0
    
        
    6
    2017-12-25 17:55:34Z

    对于Python2.7

    您可以将其格式化为秒,然后乘以1000以转换为毫秒。

     
    from datetime import datetime
    
    d = datetime.strptime("20.12.2016 09:38:42,76", "%d.%m.%Y %H:%M:%S,%f").strftime('%s')
    d_in_ms = int(d)*1000
    print(d_in_ms)
    
    print(datetime.fromtimestamp(float(d)))
    

    输出:

     
    1482206922000
    2016-12-20 09:38:42
    
        
    4
    2017-01-13 13:58:23Z
    1. 嘿,谢谢!我复制并粘贴您的代码并得到“ValueError:无效的格式字符串”。
      2017-01-13 14:15:39Z
    2. @ Tom Python版本?它在Python2.7.6
      上为我工作
      2017-01-13 14:17:51Z
    3. 我使用的是Python 2.7.12。
      2017-01-13 14:21:36Z
    4. 剥离了76,但它没有解决问题。
      2017-03-30 17:14:04Z
    5. 感谢python 2.7回答
      2017-10-26 17:05:25Z
    6. 醇>
来源放置 这里