📜  如何从Python的DateTime 对象中删除时区信息(1)

📅  最后修改于: 2023-12-03 15:08:15.264000             🧑  作者: Mango

如何从Python的DateTime 对象中删除时区信息

在Python中, DateTime对象通常会包含时区信息. 如果你不想在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方法把tzinfo设置为None

你可以使用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对象时, 要求保留时区信息, 就不要使用这两种方法.