对于简单的格式,很容易找到等价物
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
为您提供程序正在运行的语言环境中的完整月份名称;如果这是英语语言环境,它会给您“April”,但如果您在法国计算机上运行,它也可以给您“Avril”。
对于 Web 应用程序,您确实希望使用像Babel这样的外部库来代替;Babel 为您提供了额外的例程来格式化datetime
不同语言的 python 实例:
>>> from babel.dates import format_date
>>> format_date(d, format='long', locale='en')
u'April 1, 2007'
whereformat='long'
被定义为特定于语言的模式。
Babel 使用Unicode 语言环境数据标记语言来定义这些模式,让您可以访问为您定义这些模式的大型预定义语言环境库。请注意,语法正确的方法是在格式化日期时使用基数,而不是序数;英式英语允许序数日期和基数日期。因此,Unicode 标准不包括日期的序号后缀。
import datetime
print datetime.datetime.now().strftime("%dth %B %Y")
有关更多详细信息,请参阅 http://docs.python.org/library/datetime.html#strftime-strptime-behavior