以毫秒为单位将python datetime转换为时间戳

以毫秒为单位将python datetime转换为时间戳,python,datetime,unix-timestamp,Python,Datetime,Unix Timestamp,如何将格式为20.12.2016 09:38:42,76的人类可读时间转换为以毫秒为单位的Unix时间戳?我发现了很多类似的问题,但没有找到这个特定的问题/答案。在Python 3中,这可以通过两个步骤完成: 将时间字符串转换为datetime对象 将datetime对象的时间戳乘以1000,将其转换为毫秒 例如: from datetime import datetime dt_obj = datetime.strptime('20.12.2016 09:38:42,76',

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

在Python 3中,这可以通过两个步骤完成:

  • 将时间字符串转换为
    datetime
    对象
  • datetime
    对象的时间戳乘以1000,将其转换为毫秒
  • 例如:

    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
    
    1482206922000
    2016-12-20 09:38:42
    
    1482248322760
    2016-12-20 09:38:42.760000
    
    strtime
    接受时间字符串和格式字符串作为输入。timestring(第一个参数)指定实际要转换为
    datetime
    对象的内容。格式字符串(第二个参数)指定所传递字符串的实际格式

    以下是来自的格式说明符的说明:

    • %d
      -以零填充十进制数表示的月份日期
    • %m
      -以零填充十进制数表示的月份
    • %Y
      -以世纪为十进制数的年份
    • %H
      -小时(24小时时钟)作为零填充十进制数
    • %M
      -分钟作为零填充十进制数
    • %S
      -以零填充的十进制数表示的秒数
    • %f
      -十进制数为微秒,左侧填充零

    您需要使用解析时间格式

    对于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)))
    
    输出:

    1482223122760.0
    
    1482206922000
    2016-12-20 09:38:42
    
    1482248322760
    2016-12-20 09:38:42.760000
    

    对于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)))
    
    输出:

    1482223122760.0
    
    1482206922000
    2016-12-20 09:38:42
    
    1482248322760
    2016-12-20 09:38:42.760000
    

    对于那些搜索答案而不进行解析和丢失毫秒的人, 给定的
    dt_obj
    是一个日期时间:

    仅蟒蛇3,优雅

    int(dt_obj.timestamp() * 1000)
    
    python2和python3兼容:

    import time
    
    int(time.mktime(dt_obj.utctimetuple()) * 1000 + dt_obj.microsecond / 1000)
    

    您需要为
    datetime.datetime.strtime
    提供适当的格式字符串。看,嘿,谢谢。不幸的是,我得到了错误“AttributeError:'datetime.datetime'对象没有属性'timestamp'。可能是因为我使用的是Python 2.7?是的。使用MYGz对Python 2.7的回答嘿,谢谢!我复制并粘贴了你的代码,得到了一个“ValueError:无效的格式字符串”。@Tom Python version?它在Python2.7.6上为我工作,我使用的是Python2.7.12。这去掉了76,尽管如此,它并没有解决问题。感谢Python2.7的回答