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

"01/12/2011" -> 1322697600

当前回答

答案也取决于你输入的日期和时区。如果你的日期是本地日期,那么你可以像katrielalex说的那样使用mktime() -只是我不明白为什么他使用datetime而不是这个更短的版本:

>>> time.mktime(time.strptime('01/12/2011', "%d/%m/%Y"))
1322694000.0

但是请注意,我的结果与他的结果不同,因为我可能在不同的TZ中(结果是无时区的UNIX时间戳)

现在如果输入日期已经是UTC,那么我认为正确的解决方案是:

>>> calendar.timegm(time.strptime('01/12/2011', '%d/%m/%Y'))
1322697600

其他回答

答案也取决于你输入的日期和时区。如果你的日期是本地日期,那么你可以像katrielalex说的那样使用mktime() -只是我不明白为什么他使用datetime而不是这个更短的版本:

>>> time.mktime(time.strptime('01/12/2011', "%d/%m/%Y"))
1322694000.0

但是请注意,我的结果与他的结果不同,因为我可能在不同的TZ中(结果是无时区的UNIX时间戳)

现在如果输入日期已经是UTC,那么我认为正确的解决方案是:

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

你可以从两个方向,unix epoch <==> datetime:

import datetime
import time


the_date = datetime.datetime.fromtimestamp( 1639763585 )



unix_time = time.mktime(the_date.timetuple())

assert  ( the_date == datetime.datetime.fromtimestamp(unix_time) ) & \
        ( time.mktime(the_date.timetuple()) == unix_time         )   

只需使用datetime.datetime.strptime:

import datetime
stime = "01/12/2011"
print(datetime.datetime.strptime(stime, "%d/%m/%Y").timestamp())

结果:

1322697600

要使用UTC而不是本地时区,请使用.replace:

datetime.datetime.strptime(stime, "%d/%m/%Y").replace(tzinfo=datetime.timezone.utc).timestamp()

将字符串转换为日期对象:

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的午夜和本地时间是相同的时间实例。