用Python以波兰语格式化日期中的月份名称

7 投票
4 回答
6934 浏览
提问于 2025-04-16 03:47

有没有现成的方法可以在Python(或者Django模板中)按照波兰语的规则来格式化日期,让月份的名字完整显示出来?

我想要得到的是:

6 września 2010

而不是:

>>> datetime.today().date().strftime("%d %B %Y")
'06 wrzesień 2010'

4 个回答

1

楼主的代码现在按照他的想法正常工作了:返回的是 '30 kwietnia 2020' 而不是 30 kwiecień 2020。今天在 Python 2.7 和 Python 3.6 上进行了测试。设置地区是必须的,我使用了平台的默认设置——根据其他回答,这可能在网络应用中会有问题。

$ python
Python 2.7.17 (default, Apr 15 2020, 17:20:14) 
[GCC 7.5.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> [cut repeated code]
$ python3.6
Python 3.6.9 (default, Apr 18 2020, 01:56:04) 
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.datetime.today()
datetime.datetime(2020, 4, 30, 18, 13, 21, 308217)
>>> datetime.datetime.today().strftime("%d %B %Y")
'30 April 2020'
>>> import locale
>>> locale.setlocale(locale.LC_ALL, '')
'pl_PL.UTF-8'
>>> datetime.datetime.today().strftime("%d %B %Y")
'30 kwietnia 2020'
2

https://docs.djangoproject.com/en/stable/ref/templates/builtins/#date

E
月份的表示方式,通常用于长日期格式,具体根据地区不同而有所变化。
比如在波兰,'listopada' 就是表示11月的方式,而不是'Listopad'。

如果你想在你的html模板中指定日期的格式,可以这样写:
{{ datefield|date:"j E Y" }}

12

使用 Babel

>>> import babel.dates
>>> import datetime
>>> now = datetime.datetime.now()
>>> print(babel.dates.format_date(now, 'd MMMM yyyy', locale='pl_PL'))
6 września 2010

更新:加入了Nathan Davis的评论。

撰写回答