在Python中将字符串日期转换为时间戳

2024-04-25 23:02:01 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将格式为"%d/%m/%Y"的字符串转换为时间戳?

"01/12/2011" -> 1322697600

Tags: 字符串格式时间
3条回答

我使用ciso8601,比datetime的strtime快62倍。

t = "01/12/2011"
ts = ciso8601.parse_datetime(t)
# to get time in seconds:
time.mktime(ts.timetuple())

你可以学习更多here

>>> import time
>>> import datetime
>>> s = "01/12/2011"
>>> time.mktime(datetime.datetime.strptime(s, "%d/%m/%Y").timetuple())
1322697600.0

要将字符串转换为日期对象,请执行以下操作:

from datetime import date, datetime

date_string = "01/12/2011"
date_object = date(*map(int, reversed(date_string.split("/"))))
assert date_object == datetime.strptime(date_string, "%d/%m/%Y").date()

将日期对象转换为POSIX时间戳的方法取决于时区。来自Converting ^{} to UTC timestamp in Python

  • 日期对象表示UTC中的午夜

    import calendar
    
    timestamp1 = calendar.timegm(utc_date.timetuple())
    timestamp2 = (utc_date.toordinal() - date(1970, 1, 1).toordinal()) * 24*60*60
    assert timestamp1 == timestamp2
    
  • date对象表示本地时间的午夜

    import time
    
    timestamp3 = time.mktime(local_date.timetuple())
    assert timestamp3 != timestamp1 or (time.gmtime() == time.localtime())
    

时间戳是不同的,除非UTC中的午夜和本地时间是相同的时间实例。

相关问题 更多 >