如何将 GMT 时间转换为本地时间
How to Convert GMT time to Local time
我是 python 的新手,我需要将 air_time
变量转换为本地机器时间或将 current_time
变量转换为 GMT,然后在此脚本中从另一个变量中减去一个但不知道怎么做。
from datetime import datetime
air_time_GMT = '2020-08-05 13:30:00'
air_time = datetime.strptime(air_time_GMT, '%Y-%m-%d %H:%M:%S')
current_time = datetime.now()
time_remaining = air_time - current_time
print(time_remaining)
您要查找的命令是datetime.utcnow()
。
如果您使用此时间而不是 datetime.now()
,脚本将使用当前 GMT 时间而不是您当前时间 zone/machine 时间。
请注意:正如您在 中看到的,您需要谨慎对待。 time-zone 意识。但是,如果您将所有时间对象都保持在 UTC 中,使用 datetime.utcnow() 的简单方法应该没问题。
这里有一种方法,您可以在评论中进行一些解释:
from datetime import datetime, timezone
air_time_GMT = '2020-08-05 13:30:00'
# Python will assume your input is local time if you don't specify a time zone:
air_time = datetime.strptime(air_time_GMT, '%Y-%m-%d %H:%M:%S')
# ...so let's do this:
air_time = air_time.replace(tzinfo=timezone.utc) # using UTC since it's GMT
# again, if you don't supply a time zone, you will get a datetime object that
# refers to local time but has no time zone information:
current_time = datetime.now()
# if you want to compare this to a datetime object that HAS time zone information,
# you need to set it here as well. You can set local time zone via
current_time = current_time.astimezone()
print(current_time)
print(air_time-current_time)
>>> 2020-08-05 14:11:45.209587+02:00 # note that my machine is on UTC+2 / CEST
>>> 1:18:14.790413
我认为你应该注意到两件事。
- 首先,Python 默认情况下假定 datetime 对象属于本地时间(OS 时区设置),如果它是天真的(没有时区信息)。
- 其次,您不能将 naive 日期时间对象(未定义时区/UTC 偏移量)与 aware 日期时间对象(时区信息给定)。
我是 python 的新手,我需要将 air_time
变量转换为本地机器时间或将 current_time
变量转换为 GMT,然后在此脚本中从另一个变量中减去一个但不知道怎么做。
from datetime import datetime
air_time_GMT = '2020-08-05 13:30:00'
air_time = datetime.strptime(air_time_GMT, '%Y-%m-%d %H:%M:%S')
current_time = datetime.now()
time_remaining = air_time - current_time
print(time_remaining)
您要查找的命令是datetime.utcnow()
。
如果您使用此时间而不是 datetime.now()
,脚本将使用当前 GMT 时间而不是您当前时间 zone/machine 时间。
请注意:正如您在
这里有一种方法,您可以在评论中进行一些解释:
from datetime import datetime, timezone
air_time_GMT = '2020-08-05 13:30:00'
# Python will assume your input is local time if you don't specify a time zone:
air_time = datetime.strptime(air_time_GMT, '%Y-%m-%d %H:%M:%S')
# ...so let's do this:
air_time = air_time.replace(tzinfo=timezone.utc) # using UTC since it's GMT
# again, if you don't supply a time zone, you will get a datetime object that
# refers to local time but has no time zone information:
current_time = datetime.now()
# if you want to compare this to a datetime object that HAS time zone information,
# you need to set it here as well. You can set local time zone via
current_time = current_time.astimezone()
print(current_time)
print(air_time-current_time)
>>> 2020-08-05 14:11:45.209587+02:00 # note that my machine is on UTC+2 / CEST
>>> 1:18:14.790413
我认为你应该注意到两件事。
- 首先,Python 默认情况下假定 datetime 对象属于本地时间(OS 时区设置),如果它是天真的(没有时区信息)。
- 其次,您不能将 naive 日期时间对象(未定义时区/UTC 偏移量)与 aware 日期时间对象(时区信息给定)。