0

我们使用 Babel 根据用户的语言环境很好地格式化日期时间对象。在许多情况下,我们会显示不包含非零秒数的数据(例如现实生活中的事件开始时间)。

虽然使用自定义格式字符串很容易摆脱秒数,但在使用诸如'medium''short'等提供的语言环境时似乎没有任何简单的方法可以做到这一点。

除了挂钩到 babel 的内部来修改从语言环境数据返回的格式字符串之外,还有什么干净的方法可以修改这些字符串?

4

1 回答 1

1

也许通过子类Locale化和覆盖格式化属性?

class MyLocale(babel.Locale):
    @property
    def time_formats(self):
        formats = super(MyLocale, self).time_formats
        for k, v in formats.items():
            v.format = v.format.replace(':%(ss)s', '')
        return formats

>> l = MyLocale('en')
>> l.time_formats['medium'].apply(datetime.datetime.now(), l)
u'9:05 AM'
于 2015-05-29T09:03:54.747 回答