単純なフォーマットの場合、同等のものを簡単に思い付くことができます
PHP:
date("Y-m-d") === "2012-07-25";
Python:
date.strftime("%Y-%m-%d") == "2012-07-25"
しかし、Pythonに相当するものは何ですか
date("jS F Y") === "25th July 2012";
恐れ入りますが、接尾辞を自分で作成する必要があると思います。
>>> t = time.localtime()
>>> suffix = 'st' if t.tm_mday in [1,21,31] else 'nd' if t.tm_mday in [2, 22] else 'rd' if t.tm_mday in [3, 23] else 'th'
>>> time.strftime('%d%%s %B %Y', t) % suffix
'25th July 2012'
プログラミング言語機能としては少し英語中心なので、なぜ含まれていなかったのかがわかります。
*3番目と23番目の「rd」サフィックスを追加するように編集されました。
標準ライブラリは、標準Cライブラリのstrftimeフォーマットコードのみをサポートします。これは、ローカリゼーションに関してはかなり弱いものです。%B
プログラムが実行されているロケールでの完全な月の名前を示します。それが英語のロケールの場合は「4月」になりますが、フランス語のコンピューターで実行している場合は「Avril」になります。
Webアプリケーションの場合、代わりにBabelなどの外部ライブラリを使用する必要があります。Babelは、Pythondatetime
インスタンスをさまざまな言語でフォーマットするための追加のルーチンを提供します。
>>> from babel.dates import format_date
>>> format_date(d, format='long', locale='en')
u'April 1, 2007'
ここで、format='long'
は言語固有のパターンとして定義されています。
Babelは、Unicodeロケールデータマークアップ言語を使用してこれらのパターンを定義し、これらのパターンを定義する大規模な事前定義されたロケールライブラリにアクセスできるようにします。文法的に正しい方法は、日付をフォーマットするときに序数ではなく、序数を使用することであることに注意してください。イギリス英語では、序数と基数の両方の日付が許可されます。そのため、Unicode標準には、日付の序数の接尾辞は含まれていません。
import datetime
print datetime.datetime.now().strftime("%dth %B %Y")
詳細については、 http://docs.python.org/library/datetime.html#strftime-strptime-behaviorを参照してください。