2

単純なフォーマットの場合、同等のものを簡単に思い付くことができます

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";
4

3 に答える 3

3

恐れ入りますが、接尾辞を自分で作成する必要があると思います。

>>> 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」サフィックスを追加するように編集されました。

于 2012-07-25T08:51:11.367 に答える
1

標準ライブラリは、標準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標準には、日付の序数の接尾辞は含まれていません。

于 2012-07-25T08:51:47.707 に答える
-1
import datetime
print datetime.datetime.now().strftime("%dth %B %Y")

詳細については、 http://docs.python.org/library/datetime.html#strftime-strptime-behaviorを参照してください。

于 2012-07-25T08:51:01.540 に答える