2016-05-04 22 views
-1

私はpython 3.5を使用しています。ゼロパディングなしの文字列をPython datetimeオブジェクトに変換する

私はmm/dd/yyyy H:MM:SS AM/PMという形式の文字列を持っています。これはPythonのdatetimeオブジェクトとして好きです。

ここに私が試したことがあります。

date = "09/10/2015 6:17:09 PM" 
    date_obj = datetime.datetime.strptime(date, '%d/%m/%Y %I:%M:%S %p') 

しかし、時間がゼロに埋められていないため、エラーになります。書式設定は、 datetime documentationのテーブルごとに行われましたが、時間には1桁の数字が含まれていません。

私は日付を分割して、ゼロを追加してから再び組み立ててみましたが、これはうまくいかない/理想的です。

date = "09/10/2015 6:17:09 PM" 
    date = date.split() 
    date = date[0] + " 0" + date[1] + " " + date[2] 

直接datetimeオブジェクト、または参考になる時間を水増しのためのより良い方法を取得する方法上の任意の勧告。

ありがとうございます。

+1

私は '2015年10月9日18を得た:17:09'出力としてPythonで2.7。あなたは特定の例外を共有できますか?どのバージョンのPythonをお使いですか? –

+0

これは問題の原因ではありませんが、日付文字列は 'mm/dd/yyyy'と書かれていますが、コードは' '%d /%m /%Y'、つまり日と月が入れ替わっている。 – mhawke

答えて

0

このコードは何も問題はありません。

>>> date = "09/10/2015 6:17:09 PM" 
>>> date_obj = datetime.datetime.strptime(date, '%m/%d/%Y %I:%M:%S %p') 
>>> date_obj 
datetime.datetime(2015, 9, 10, 18, 17, 9) 
>>> print(date_obj) 
2015-09-10 18:17:09 

datetimeオブジェクトの個々の属性は、整数ではなく文字列であり、内部表現は、時間の24時間の値を使用しています。

入力形式がmm/dd/yyyyであることを述べると、曜日と月を書式文字列に入れ替えました。

しかし、あなたがこのようなdatetime.strftime()を使用することができますので、あなたが実際に、ゼロパディングされた時間を持つ文字列としてそれをしたいようだ:

>>> date_str = date_obj.strftime('%m/%d/%Y %I:%M:%S %p') 
>>> print(date_str) 
09/10/2015 06:17:09 PM 

# or, if you actually want the output format as %d/%m/%Y.... 
>>> print(date_obj.strftime('%d/%m/%Y %I:%M:%S %p')) 
10/09/2015 06:17:09 PM