python - 将格式化的时间字符串转换为毫秒

标签 python datetime time

我正在尝试将 '2015-09-15T17:13:29.380Z' 转换为毫秒。

起初我使用:

time.mktime(
  datetime.datetime.strptime(
    "2015-09-15T17:13:29.380Z",
    "%Y-%m-%dT%H:%M:%S.%fZ"
  ).timetuple()
)

我得到了 1442330009.0 - 没有微秒。我认为 time.mktime 将数字四舍五入到最接近的秒数。

最后我做了:

origTime = '2015-09-15T17:13:29.380Z'
tupleTime = datetime.datetime.strptime(origTime, "%Y-%m-%dT%H:%M:%S.%fZ")
microsecond = tupleTime.microsecond
updated = float(time.mktime(tupleTime.timetuple())) + (microsecond * 0.000001)

是否有更好的方法以及如何使用时区

最佳答案

您输入的时间是UTC;除非您的本地时区始终为 UTC,否则此处使用 time.mktime() 是不正确的。

有两个步骤:

  1. 将输入的 rfc 3339 时间字符串转换为表示 UTC 时间的日期时间对象

    from datetime import datetime
    
    utc_time = datetime.strptime("2015-09-15T17:13:29.380Z",
                                 "%Y-%m-%dT%H:%M:%S.%fZ")
    

    你已经做到了。另见 Convert an RFC 3339 time to a standard Python timestamp

  2. 将 UTC 时间转换为以毫秒表示的 POSIX 时间:

    from datetime import datetime, timedelta
    
    milliseconds = (utc_time - datetime(1970, 1, 1)) // timedelta(milliseconds=1)
    # -> 1442337209380
    

    有关适用于 Python 2.6-3+ 的版本,请参阅 How can I convert a datetime object to milliseconds since epoch (unix time) in Python?

关于python - 将格式化的时间字符串转换为毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32606097/

相关文章:

python - 将字符串格式映射到数字列表

javascript - 为什么这个网页使用Javascript来显示文章的日期?

python - 如何将默认值设置为zope.schema.datetime?

c - 时间相关函数和多线程

php - 如何在 PHP 中获取本地系统时间?

python - Python MySQL在Blob中插入和检索列表

python - OAuth2 TokenScope 是否类似于 Django 权限?

全局安装的 Python 包,但不在 virtualenv (PyGTK) 中

python - 计算连续时间段的天数(Python,日期时间)

java - 如何在修改后保持 Java 日历更新?