Lui*_*ruz -1 python timestamp date
我有一个数据库,其中包含日期格式为:“ 2015-10-20 22:24:46”。我需要将这些日期转换为UNIX时间戳(UTC),最简单的方法是使用Python?
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())
Run Code Online (Sandbox Code Playgroud)
不使用任何 3rd 方库:
最直接的方法是datetime从给定的date对象创建一个对象,然后从中获取时间戳。
from datetime import date, datetime
dt = datetime(
year=d.year,
month=d.month,
day=d.day
)
timestamp = int(dt.timestamp())
Run Code Online (Sandbox Code Playgroud)
datetime.datetime.timestamp()已在 python 3.3 中添加。它返回一个浮点数(十进制表示毫秒),因此您必须自己将其转换为整数。
使用示例:
from datetime import datetime
def ymdhms_to_timestamp(value: str) -> int:
dt = datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
return int(dt.timestamp())
t = ymdhms_to_timestamp("2015-10-20 22:24:46")
# 1445372686
datetime.fromtimestamp(t)
# datetime.datetime(2015, 10, 20, 22, 24, 46)
Run Code Online (Sandbox Code Playgroud)
另请注意,由于格式化的日期字符串不包含时区信息,因此如果代码执行的系统的时区不是 UTC,则生成的时间戳将不是 UTC。(更一般地说,如果存储的日期与您的系统不在同一时区,结果将不正确。)
但是,如果存储的格式化日期最初是 UTC,您可以在将“原始日期时间”转换为时间戳之前将其纠正为“时区感知日期时间”。
例子:
from datetime import datetime, timezone
def ymdhms_to_timestamp_utc(value: str) -> int:
naive_dt = datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
utc_dt = naive_dt.replace(tzinfo=timezone.utc)
return int(utc_dt.timestamp())
t = ymdhms_to_timestamp_utc("2015-10-20 22:24:46")
# 1445379886
datetime.fromtimestamp(t)
# datetime.datetime(2015, 10, 21, 0, 24, 46)
Run Code Online (Sandbox Code Playgroud)
import time
timestamp = time.mktime(time.strptime('2015-10-20 22:24:46', '%Y-%m-%d %H:%M:%S'))
Run Code Online (Sandbox Code Playgroud)
有关带有所有%符号的格式字符串的更多信息,请参见python的时间库。
| 归档时间: |
|
| 查看次数: |
9151 次 |
| 最近记录: |