Python相当于PHP的日期()

时间:2012-07-25 08:40:42

标签: php python

对于简单格式,很容易找到等价物

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

3 个答案:

答案 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