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 中设置为英语-加拿大,我期望“2020-01-31”但得到“01-31-2020”
在 Excel 设置为德语时,我期望“31.01.20”但得到“01.31.2020”。
所以它设法使用了正确的分隔符,但其余的都是错误的。
提前致谢
第一个问题是是否可以在 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。
使用 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 中设置为英语-加拿大,我期望“2020-01-31”但得到“01-31-2020”
在 Excel 设置为德语时,我期望“31.01.20”但得到“01.31.2020”。
所以它设法使用了正确的分隔符,但其余的都是错误的。
提前致谢
第一个问题是是否可以在 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。