在Python 2.3中读取格式化日期吗?
我之前从来没有使用过Python 2.3中的datetime模块,现在遇到了一个很简单的问题。我需要读取一个日期,格式是
'10-JUL-2010'
然后我想减去一天(我会用timedelta
),最后返回一个字符串
'09-JUL-2010 00:00:00 ET'
当然,这个操作是针对成百上千个日期的。虽然这看起来应该很简单,但我找不到在Python 2.3中如何读取格式化日期的信息!求助!
编辑
我可以把格式化的日期提取为一个元组,但它不接受timedelta
对象进行减法运算!我还在继续研究...
** 编辑 **
最后... 多亏了你们的帮助,我终于解决了这个问题,方法如下:
print (datetime(*(time.strptime(date_string, format)[0:6])).strftime('%d-%b-%Y')).upper()+'00:00:00 ET'
3 个回答
0
如果你发现 strptime() 这个函数不太好用,还有一个简单粗暴的方法可以尝试,那就是用正则表达式来处理。
import re
import date
timestamp_regex = re.compile(r"(\d\d)-(\w\w\w)-(\d\d\d\d)")
# month_mapping: a mapping for 3 letter months to integers
d1 = datetime.date(int(match.group(3)), #year
month_mapping[match.group(2)],#month
int(match.group(1))) #day
2
好吧,在2.3版本中没有内置的功能来处理这个,只有从2.5版本开始才有。不过,对于这个特定的格式,你可以手动解析一下...
months = { 'JAN' : 1, 'FEB' : 2, ... } # write that yourself :p
day,mon,year = thedate.split('-')
day = int(day)
mon = months[mon]
year = int(year)
parsed = datetime.datetime(day=day, month=month, year=year)
3
你在找 datetime.datetime.strptime()
这个函数,但它的说明文档实在太糟糕了。其实,它的功能是和 datetime.datetime.strftime()
正好相反。
你需要的格式字符串是:'%d-%b-%Y'
可以参考这些链接: http://www.python.org/doc/2.3.5/lib/node211.html 和 http://www.python.org/doc/2.3.5/lib/datetime-datetime.html 还有 http://www.python.org/doc/2.3.5/lib/module-time.html
补充:哎呀! 在 Python 2.3 的 datetime 模块里没有 strptime 这个函数。它在 time
模块里,你得用那个。