如何将格式为“%d/%m/%Y”的字符串转换为时间戳?
"01/12/2011" -> 1322697600
如何将格式为“%d/%m/%Y”的字符串转换为时间戳?
"01/12/2011" -> 1322697600
当前回答
一个获取UNIX纪元时间的简单函数。
注意:此函数假设输入日期时间为UTC格式(请参阅此处的注释)。
def utctimestamp(ts: str, DATETIME_FORMAT: str = "%d/%m/%Y"):
import datetime, calendar
ts = datetime.datetime.utcnow() if ts is None else datetime.datetime.strptime(ts, DATETIME_FORMAT)
return calendar.timegm(ts.utctimetuple())
用法:
>>> utctimestamp("01/12/2011")
1322697600
>>> utctimestamp("2011-12-01", "%Y-%m-%d")
1322697600
其他回答
>>> import time
>>> import datetime
>>> s = "01/12/2011"
>>> time.mktime(datetime.datetime.strptime(s, "%d/%m/%Y").timetuple())
1322697600.0
>>> int(datetime.datetime.strptime('01/12/2011', '%d/%m/%Y').strftime("%s"))
1322683200
似乎相当有效:
import datetime
day, month, year = '01/12/2011'.split('/')
datetime.datetime(int(year), int(month), int(day)).timestamp()
1.61µs±120 ns /循环(7次运行的平均值±标准值,每次100000次循环)
将字符串转换为日期对象:
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()
将date对象转换为POSIX时间戳的方法取决于时区。从转换datetime。在Python中,date到UTC时间戳:
date对象表示UTC的午夜 导入日历 Timestamp1 = calendar.timegm(utc_date.timetuple()) Timestamp2 = (utc_date.toordinal() - date(1970, 1,1).toordinal()) * 24*60*60 断言timestamp1 == timestamp2 Date对象表示本地时间的午夜 导入的时间 timestamp = time.mktime(local_date.timetuple()) 断言timestamp3 != timestamp1或(time.gmtime() == time.localtime())
时间戳是不同的,除非UTC的午夜和本地时间是相同的时间实例。
使用datetime即可。时间戳(您的datetime实例),datetime实例包含时区信息,因此时间戳将是标准utc时间戳。如果您将datetime转换为timetuple,它将失去它的时区,因此结果将是错误的。 如果你想提供一个接口,你应该这样写: Int (datetime.timestamp(time_instance)) * 1000