在Python

时间:2015-11-10 02:03:19

标签: python date timestamp

我有一个包含日期格式的数据库:“2015-10-20 22:24:46”。我需要将这些日期转换为UNIX时间戳(UTC),用Python做最简单的方法是什么?

4 个答案:

答案 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'))