如何将格式为“%d/%m/%Y”的字符串转换为时间戳?
"01/12/2011" -> 1322697600
如何将格式为“%d/%m/%Y”的字符串转换为时间戳?
"01/12/2011" -> 1322697600
当前回答
只需使用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()
其他回答
您可以从datetime引用下面的链接来使用strptime函数。Datetime,从任何格式转换日期和时区。
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
一个获取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 dateutil.parser
dateutil.parser.parse("01/12/2011", dayfirst=True).timestamp()
似乎相当有效:
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次循环)
我想给初学者(像我一样)一个答案:
你有日期字符串“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