导出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意识的提示。