0

ユーザーのロケールに応じて適切に datetime オブジェクトをフォーマットするために Babel を使用しています。多くの場合、ゼロ以外の秒を含まないデータ (実際のイベントの開始時間など) を表示します。

カスタム形式の文字列を使用して秒を取り除くのは簡単ですが、 'medium''short'などのロケール提供のものを使用する場合、そうする簡単な方法はないようです。

ロケールデータから返されたフォーマット文字列を変更するためにバベルの内部にフックする以外に、これらの文字列を変更するきれいな方法はありますか?

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 に答える