如何将格式为“%d/%m/%Y”的字符串转换为时间戳?
"01/12/2011" -> 1322697600
如何将格式为“%d/%m/%Y”的字符串转换为时间戳?
"01/12/2011" -> 1322697600
当前回答
您可以从datetime引用下面的链接来使用strptime函数。Datetime,从任何格式转换日期和时区。
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
其他回答
答案也取决于你输入的日期和时区。如果你的日期是本地日期,那么你可以像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
我想给初学者(像我一样)一个答案:
你有日期字符串“01/12/2011”。然后可以按照“%d/%m/%Y”的格式编写。如果你想格式化成另一种格式,比如“2015年7月9日”,这里有一个很好的备忘单。
导入datetime库。 使用datetime。Datetime类来处理日期和时间组合。 使用strptime方法将字符串datetime转换为对象datetime。 最后,使用timestamp方法以浮点形式获取Unix纪元时间。所以,
import datetime
print( int( datetime.datetime.strptime( "01/12/2011","%d/%m/%Y" ).timestamp() ) )
# prints 1322712000
将字符串转换为日期对象:
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的午夜和本地时间是相同的时间实例。
似乎相当有效:
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次循环)
您可以从datetime引用下面的链接来使用strptime函数。Datetime,从任何格式转换日期和时区。
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior