导出date显示为UTC

我想用Django导出一些数据到Excel使用openpyxl。 导出的date时间在Excel中被正确解释,但是他们的打印输出是UTC,而不是本地时区(在这种情况下是CET),正如我所期望的那样。

我试图使用to_excel ,但只输出date时间转换为Excel的内部浮动格式。 另外还将其解释为float,而不是datetime。 格式化为date时间时,仍然使用UTC

我也尝试使用Django的django.utils.timezone.localtime ,但date再次以UTC django.utils.timezone.localtime呈现。

我可以从我的date减去时区偏移量,但我觉得这更可能是我在这里失去了一些东西。

如何导出date时间数据,以便Excel将其显示在我的本地时区中?

Excel本身没有时区的概念,总是会天真的date和时间。 在这种情况下,唯一可行的做法是将UTC转换为openpyxl所做的。 openpyxl.utils.datetime是要查看的模块,如果你想改变这个

我结束了使用JavaScript和服务器端处理的组合:

在客户端HTML中,我为用户的本地时区创build了一个input:

 <input type="hidden" value="" name="tz" id="xls-tz"/> 

并填充它的值(使用jQuery):

 $("#xls-tz").val(new Date().getTimezoneOffset()); 

在服务器上,我parsing时区偏移量并写入到openpyxl:

 tz_offs = int(request.GET.get("tz", "0")) ws.cell(row=row, column=2, value=item.time - timedelta(minutes=tz_offs)) 

国际海事组织非常接近我所需要的。

谢谢查理关于Excel不是TZ意识的提示。