📅  最后修改于: 2023-12-03 15:08:15.264000             🧑  作者: Mango
在Python中, DateTime对象通常会包含时区信息. 如果你不想在DateTime对象中保存时区信息, 你可以通过下面的方法把时区信息删除.
你可以通过datetime对象的strftime方法, 把datetime对象格式化为一个字符串. 然后再通过strptime方法把这个字符串转换成一个新的datetime对象. 新的datetime对象就不再包含时区信息了.
import datetime
# 创建一个新的datetime对象, 包含时区信息
dt_with_tz = datetime.datetime.now(datetime.timezone.utc)
# 把datetime对象转换成字符串
dt_str = dt_with_tz.strftime('%Y-%m-%d %H:%M:%S.%f')
# 把字符串转换成新的datetime对象, 不包含时区信息
dt_without_tz = datetime.datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S.%f')
print("With TZ: ", dt_with_tz)
print("Without TZ: ", dt_without_tz)
# Outpus:
# With TZ: 2021-12-10 14:49:07.057369+00:00
# Without TZ: 2021-12-10 14:49:07.057369
你可以使用datetime对象的replace方法, 把datetime对象的tzinfo属性设置为None. 这样新的datetime对象就不再包含时区信息了.
import datetime
# 创建一个新的datetime对象, 包含时区信息
dt_with_tz = datetime.datetime.now(datetime.timezone.utc)
# 用replace方法把tzinfo属性设为None
dt_without_tz = dt_with_tz.replace(tzinfo=None)
print("With TZ: ", dt_with_tz)
print("Without TZ: ", dt_without_tz)
# Output:
# With TZ: 2021-12-10 14:56:41.925487+00:00
# Without TZ: 2021-12-10 14:56:41.925487
以上两种方案都可以用来从datetime对象中删除时区信息. 如果你需要在处理datetime对象时, 要求保留时区信息, 就不要使用这两种方法.