我们使用 Babel 根据用户的语言环境很好地格式化日期时间对象。在许多情况下,我们会显示不包含非零秒数的数据(例如现实生活中的事件开始时间)。
虽然使用自定义格式字符串很容易摆脱秒数,但在使用诸如'medium'或'short'等提供的语言环境时似乎没有任何简单的方法可以做到这一点。
除了挂钩到 babel 的内部来修改从语言环境数据返回的格式字符串之外,还有什么干净的方法可以修改这些字符串?
我们使用 Babel 根据用户的语言环境很好地格式化日期时间对象。在许多情况下,我们会显示不包含非零秒数的数据(例如现实生活中的事件开始时间)。
虽然使用自定义格式字符串很容易摆脱秒数,但在使用诸如'medium'或'short'等提供的语言环境时似乎没有任何简单的方法可以做到这一点。
除了挂钩到 babel 的内部来修改从语言环境数据返回的格式字符串之外,还有什么干净的方法可以修改这些字符串?
也许通过子类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'