对于简单格式,很容易找到等价物
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";
答案 0 :(得分: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”后缀。
答案 1 :(得分:1)
标准库仅支持standard C library strftime formatting codes,这在本地化方面相当薄弱。 %B
为您提供运行程序的语言环境中的完整月份名称;如果这是英语语言环境,它会给你'四月',但如果你在法国电脑上运行它也可以给你'艾薇儿'。
对于Web应用程序,您确实希望使用像Babel这样的外部库来代替它; Babel为您提供了使用不同语言格式化python datetime
实例的额外例程:
>>> from babel.dates import format_date
>>> format_date(d, format='long', locale='en')
u'April 1, 2007'
其中format='long'
被定义为特定于语言的模式。
Babel使用Unicode Locale Data markup language定义这些模式,使您可以访问为您定义这些模式的大型预定义语言环境库。请注意grammatically correct way is to use cardinal, not ordinal numbers when formatting dates;英国英语允许序数和基数日期。因此,Unicode标准不包括日期的序数后修复。
答案 2 :(得分:-1)
import datetime
print datetime.datetime.now().strftime("%dth %B %Y")
有关详细信息,请参阅 http://docs.python.org/library/datetime.html#strftime-strptime-behavior