Python Xlsxwriter - 使日期遵循不同的语言环境格式

Python Xlsxwriter - Make dates respect different locale format

使用 Xlsx 编写器,我想编写符合 OS region/language 设置的语言环境格式的日期。例如,加拿大的OS设置的默认格式是'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 中设置一种日期格式,该格式会根据您想要的方式更改以匹配语言环境。我认为不是。

如果您在 Excel 中设置任何 "mm-dd-yyyy" 样式格式,那么您将在其他语言环境中获得该格式(分隔符除外)。

因此,如果在 Excel 中不可能,那么在 XlsxWriter 中也不可能(同样,如果在 Excel 中可能,那么它在 XlsxWriter 中也同样有效)。

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

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 位数年份的任何内置格式。

另请参阅 XlsxWriter 文档中的 Number Format Categories and Number Formats in different locales