我建议安装优秀的
dateutil模块。(在Ubuntu/Debian中,它由python-dateutil软件包提供)。
dateutil可以将日期字符串解析为datetime对象:它可以处理许多不同的日期格式,而您无需动手(*):
import dateutil.parser as dparser
date=dparser.parse("Mon May 7 1883 10:36:28")
print(date)
date=dparser.parse("1685-3-21")
print(date)
date=dparser.parse("12/17/1770")
print(date)
请注意,解析器将"12/17/1770"解释为"MM/DD/YYYY"的形式。您可以使用解析器的
dayfirst
和
yearfirst
选项更改此行为。(参见
http://labix.org/python-dateutil)
print(type(date))
# <type 'datetime.datetime'>
datetime对象可以轻松排序:
dates=[dparser.parse("Mon May 7 1883 10:36:28"),dparser.parse("1685-3-21"),dparser.parse("12/17/1770"),]
dates.sort()
print(dates)
如果您不想安装dateutil包,那么您需要自己编写将日期字符串转换为datetime对象的方法。这需要更多的工作,因为您需要定义格式。下面的“%Y-%m-%d”定义了YYYY-MM-DD格式。有关可用格式代码的更多信息,请参见
http://au2.php.net/strftime(或strftime的man页面)。
例如,
dates=[datetime.datetime.strptime(date_str,'%Y-%m-%d') for date_str in
('1883-5-7','1685-3-21','1770-12-17',)]
print([str(date) for date in dates])
dates.sort()
print([str(date) for date in dates])
使用 datetime.datetime.strftime() 方法,可以控制将 datetime 对象转换回可打印字符串时的格式。