因此,基本上我对ISO 8601的格式有所了解
"2018-07-06T07:00:00.000"
基本上,我所获得的是我开始将ISO更改为更正式的时间戳,即:
etatime = str(datetime.datetime.strptime("2018-07-06T07:00:00.000", "%Y-%m-%dT%H:%M:%S.%f"))
这将给出以下输出:
2018-07-06 07:00:00
但是我注意到时间比BST(英国时间)晚1小时,应该再加上1小时。
我的问题是,是否可以从(2018-07-06T07:00:00.000
)到(2018-07-06 08:00:00 BST
)?
答案 0 :(得分:1)
一个建议是您可以使用timedelta
模块中的datetime
函数:
from datetime import datetime, timedelta
etatime = datetime.strptime("2018-07-06T07:00:00.000", "%Y-%m-%dT%H:%M:%S.%f")
# Before adding one hour
print(etatime)
etatime = etatime + timedelta(hours=1)
# After adding one hour
print(etatime)
输出:
2018-07-06 07:00:00
2018-07-06 08:00:00
答案 1 :(得分:1)
假设:输入代表UTC时间戳,您想将其本地化为伦敦时间。您可能不想将其本地化为BST时间,因为BST是GMT的DST变体,并且像伦敦这样的实际位置会根据一年中的时间在BST和GMT之间切换。您将要安装pytz
module。
from datetime import datetime, timezone
import pytz
date = '2018-07-06T07:00:00.000'
utc_date = datetime.strptime(date, '%Y-%m-%dT%H:%M:%S.%f').replace(tzinfo=timezone.utc)
london_date = utc_date.astimezone(pytz.timezone('Europe/London'))
datetime.datetime(2018, 7, 6, 8, 0, tzinfo=<DstTzInfo 'Europe/London' BST+1:00:00 DST>)
strptime
为您提供天真 datetime
对象(没有时区信息),.replace
为您提供感知 {{1 }}对象(带有时区信息),然后您可以将其简单地转换为其他时区。