我需要在 Excel 文件中添加日期。 我在这些日期上使用时区。它与 django Rest 框架配合得很好。 (我的 GET 请求返回以下格式的日期:
2022-07-23T13:19:59+02:00
)与 Django 管理相同,欧洲/巴黎时区也被很好地考虑在内(+02:00)。
但是,当我使用openpyxl时,指示的时间晚了2小时(它采用UTC时区)。
sheet.append([date_recorded.strftime("%d/%m/%Y %H:%M:%S")])
如果我在控制台中打印此日期,也会发生同样的情况。 (
2022-07-11 15:19:50+00:00
)
如何纠正这个问题?
您可以简单地将其转换为您想要的区域,如下所示:
from dateutil import tz
utctime = "YOUR CURRENT VALUE OF DATETIME"
from_zone = tz.gettz("UTC")
to_zone = tz.gettz("yourzone")
utctime = utctime.replace(tzinfo=from_zone)
new_time = utctime.astimezone(to_zone)
由于您使用的是 django,因此可以使用内置的
get_current_timezone
将日期时间对象转换为本地时区:
from django.utils import get_current_timezone
timezone = get_current_timezone()
date_recorded = date_recorded.astimezone(timezone)
sheet.append([date_recorded.strftime("%d/%m/%Y %H:%M:%S")])
由于Excel本身不支持时区,解决方案是清除datetime中的tzinfo:
dt = dt_tz.replace(tzinfo=None)