在 openpyxl 中使用时区

问题描述 投票:0回答:3

我需要在 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
)

如何纠正这个问题?

python-3.x django datetime openpyxl
3个回答
4
投票

您可以简单地将其转换为您想要的区域,如下所示:

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)

0
投票

由于您使用的是 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")])

0
投票

由于Excel本身不支持时区,解决方案是清除datetime中的tzinfo:

dt = dt_tz.replace(tzinfo=None)
© www.soinside.com 2019 - 2024. All rights reserved.