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