【问题标题】:Format date with month name in polish, in python在python中用波兰语中的月份名称格式化日期
【发布时间】:2010-09-06 21:33:37
【问题描述】:

是否有一种开箱即用的方式在 python 中(或在 django 模板中)格式化一个符合波兰语规则的完整月份名称的日期?

我想得到:

6 września 2010

而不是:

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

【问题讨论】:

  • 这是否意味着有语法意识的strftime()
  • 我有类似的问题,但我需要解析日期而不是格式。由于语法的原因,我在原生 Python 日期函数中遇到了类似的问题。我发现有 parse_datetime 方法(),但它看起来在 1.* 版本的 Babel 中被删除了。有什么想法吗?
  • 它现在按预期工作:今天测试 datetime.datetime.today().strftime("%d %B %Y") 返回 '30 kwietnia 2020'

标签: python django date internationalization format


【解决方案1】:

使用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 的评论。

【讨论】:

  • 注意:在格式字符串中使用d MMMM yyyy(只有一个d)来消除前导0。
  • @Alexandros 我更新了答案以使用 Python 3 语法。以前的语法适用于 Python 2。
【解决方案2】:

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

电子
月份,特定于语言环境的替代表示,通常用于长日期表示。
'listopada'(波兰语区域设置,与 'Listopad' 相对)

如果您想在 html 模板中指定格式,则可以这样做:
{{ datefield|date:"j E Y" }}

【讨论】:

    【解决方案3】:

    OP 的代码现在可以按他的预期工作:返回 '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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多