我有一个包含日期格式的数据库:“2015-10-20 22:24:46”。我需要将这些日期转换为UNIX时间戳(UTC),用Python做最简单的方法是什么?
答案 0 :(得分:4)
import time
timestamp = time.mktime(time.strptime('2015-10-20 22:24:46', '%Y-%m-%d %H:%M:%S'))
有关包含所有%符号的格式字符串的详细信息,请参阅python's time library。
答案 1 :(得分:1)
最简单的方法是从给定的datetime
对象创建一个date
对象,然后从该对象获取时间戳。
from datetime import date, datetime
dt = datetime(
year=d.year,
month=d.month,
day=d.day
)
timestamp = int(dt.timestamp())
答案 2 :(得分:0)
from datetime import datetime
import time
dt = datetime.strptime('2015-10-20 22:24:46', '%Y-%m-%d %H:%M:%S')
ts = time.mktime(dt.timetuple())
答案 3 :(得分:0)
datetime.datetime.timestamp()已在python 3.3中添加。它返回一个浮点数(十进制为毫秒),因此您必须自己将其转换为整数。
示例用法:
import datetime as dtm
def ymdhms_to_timestamp(value: str) -> int:
dt = dtm.datetime.strptime(value, '%Y-%m-%d %H:%M:%S')
return int(dt.timestamp())
print(ymdhms_to_timestamp('2015-10-20 22:24:46'))
还请注意,由于格式化的日期字符串不包含任何时区信息,因此如果执行代码的系统所在的时区不是时间戳,则结果时间戳将不是UTC 。 (通常,如果存储的日期与系统不在同一时区,则结果将不正确。)
但是,如果存储的格式化日期最初是UTC,则可以在将其转换为时间戳之前将“原始日期时间”更正为“时区感知日期时间”。
示例:
import datetime as dtm
def ymdhms_to_timestamp_utc(value: str) -> int:
naive_dt = dtm.datetime.strptime(value, '%Y-%m-%d %H:%M:%S')
utc_dt = naive_dt.replace(tzinfo=dtm.timezone.utc)
return int(utc_dt.timestamp())
print(ymdhms_to_timestamp_utc('2015-10-20 22:24:46'))