2013-04-29 100 views
13

我想将此类"29-Apr-2013-15:59:02" 这样的字符串转换为更实用的东西。转换(YYYY-MM-DD-HH:MM:SS)日期时间

破折号可以很容易地替换为空格或其他字符。这种格式将是理想的:"YYYYMMDD HH:mm:ss (20130429 15:59:02)"

编辑:

对不起,我没具体看在另一篇文章的答案。但是,再次,我是无知的,所以可能一直在看解决方案,并不知道它。我有这个工作,但我不认为它“漂亮”。

#29-Apr-2013-15:59:02 

import sys, datetime, time 

#inDate = sys.argv[1] 
inDate = 29-Apr-2013-15:59:02 

def getMonth(month): 
    monthDict = {'Jan':'01','Feb':'02','Mar':'03','Apr':'04','May':'05','Jun':'06','Jul':'07','Aug':'08','Sep':'09','Oct':'10','Nov':'11','Dec':'12'} 
    for k, v in monthDict.iteritems(): 
     if month == k: 
      return v 

day = inDate[:2] 
#print day 
month = inDate[3:6] 
#print month 
year = inDate[7:11] 
#print year 
time = inDate[-8:] 
#print time 

newDate = year+getMonth(month)+day 
newDateTime = newDate+" "+time 

print newDate 
print newDateTime 

有关改进的任何想法?

+7

你读过['的strftime()'和'strptime()'行为] (http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior)文档?有那些应该帮助你的例子。 – 2013-04-29 19:50:08

+1

@Andbdrew - 小心:http://meta.stackexchange.com/questions/172758/what-have-you-tried-epidemic – mgilson 2013-04-29 19:51:28

+0

我会尽量调整你如何获得日期字符串 – cmd 2013-04-29 19:58:00

回答

27

使用datetime.strptime()inDate字符串解析成日期对象,用datetime.strftime()的各种格式输出你喜欢:

>>> from datetime import datetime 
>>> inDate = "29-Apr-2013-15:59:02" 
>>> d = datetime.strptime(inDate, "%d-%b-%Y-%H:%M:%S") 
>>> d 
datetime.datetime(2013, 4, 29, 15, 59, 2) 
>>> d.strftime("YYYYMMDD HH:mm:ss (%Y%m%d %H:%M:%S)") 
'YYYYMMDD HH:mm:ss (20130429 15:59:02)'