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

时间:2009-12-18 01:08:10

标签: python datetime

我从未使用过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 :(得分: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模块中,您必须使用该模块。

答案 1 :(得分:2)

嗯,2.3 only from 2.5 on中没有内置功能。但对于那种格式,您可以手动解析它......

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)

答案 2 :(得分: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