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为您提供程序正在运行的语言环境中的完整月份名称;如果这是英语语言环境,它会给您“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 标准不包括日期的序号后缀。

于 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 回答