Python Xlsxwriter - 使日期尊重不同的区域设置格式

标签 python date format xlsxwriter

使用 Xlsx writer,我想编写遵循操作系统区域/语言设置设置的区域设置格式的日期。例如,加拿大操作系统设置的默认格式是“yyyy-mm-dd”,而德国操作系统设置的默认格式是“dd.mm.yy”。如何使日期响应?

我已经阅读了文档,但仍然无法弄清楚。

这是我尝试过的:

import xlsxwriter
from datetime import date

workbook = xlsxwriter.Workbook('sample.xlsx')
worksheet = workbook.add_worksheet()

my_date = date(2020, 1, 31)
my_format = workbook.add_format({'num_format': 'mm/dd/yyyy'})
worksheet.write(0, 0, my_date, my_format)

workbook.close()

  • 在设置为英语-加拿大的 Excel 中,我期望“2020-01-31”,但得到“01-31-2020”

  • 在设置为德语的 Excel 中,我期望“31.01.20”,但得到“01.31.2020”。

所以它设法使用正确的分隔符,但其余的都是错误的。


提前致谢

最佳答案

第一个问题是是否可以在 Excel 中设置日期格式,该格式将根据您想要的方式更改以匹配区域设置。我认为不是。

如果您在 Excel 中设置任何“mm-dd-yyyy”样式格式,那么您将在其他区域设置中获得该格式(分隔符除外)。

因此,如果在 Excel 中不可能,则在 XlsxWriter 中也不可能(同样,如果在 Excel 中可能,那么在 XlsxWriter 中也将同样工作)。

一个部分解决方法是使用 in-built Excel number formats 之一在 XlsxWriter 中。这些是数字索引而不是字符串:

import xlsxwriter
from datetime import date

workbook = xlsxwriter.Workbook('sample.xlsx')
worksheet = workbook.add_worksheet()

my_date = date(2020, 1, 31)
my_format = workbook.add_format({'num_format': 14})
worksheet.write(0, 0, my_date, my_format)

workbook.close()

此日期(2020 年 12 月 31 日)在加拿大语言环境中为 20-12-31,在德国语言环境中为 31.12.20。但是,没有任何内置格式可以提供 4 位数的年份。

另请参阅Number Format CategoriesNumber Formats in different locales在 XlsxWriter 文档中。

关于Python Xlsxwriter - 使日期尊重不同的区域设置格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60083707/

相关文章:

python - python 中是否有类似 date_diff 的东西来获取明天的日期?

datetime - 如何在 Go 中获取序号指示符(第 1、第 2、第 3 等)

matlab - 将 <<(index, index) value>> 形式的数据导入稀疏矩阵

input - Vue.Js 2 输入格式化数字

python - 使用 apply 将列传递给函数时,数据框不会更新

python - 方程 latex 代码的余弦相似度

date - 筛选 SharePoint 列表上的年初至今条目

r - 如何按组确定两列和两行的两个日期之间的天数差异?

Python 将 xml 转换为 json 需要一个类似字节的对象

Python3 从 URL 下载编码错误的图像