web-dev-qa-db-ja.com

変換(YYYY-MM-DD-HH:MM:SS)日時

この_"29-Apr-2013-15:59:02"_のような文字列をより使いやすいものに変換したい。

ダッシュは、スペースまたは他の文字に簡単に置き換えることができます。この形式は理想的です:"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
_

改善についての考えはありますか?

19
dgj32784

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)'
35
Bryan

Dateutilを調査しましたか?

http://labix.org/python-dateutil

私はあなたに似た質問を見つけました: ISO 8601日時文字列をPython日時オブジェクト?

1
David

datetime 、特にstrptimeを調べる必要があります。

0
Dave