2013-04-29 80 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)'