在Python 2.3中读取格式化日期吗?

2 投票
3 回答
3914 浏览
提问于 2025-04-15 17:09

我之前从来没有使用过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.htmlhttp://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 模块里,你得用那个。

撰写回答