2016-06-18 12 views
0

datetimeオブジェクトから時間を加算または減算してからstrptimeに変換しようとしていますが、エラーメッセージが表示されます。strptimeでdatetime形式を変更する

ここでは、datetimeオブジェクトの '時間'を取得し、それに+1を加えてからstrptimeを使用しようとしています。

time1 = datetime.datetime.strptime("09/Sep/2015:08:00:00", "%d/%b/%Y:%H:%M:%S") 

print time1.hour 
print time1.hour + 1 

> 8 
    9 

time3 = time1.hour + 1 
print time3.strptime('%H') 

> print time3.strptime('%H') 
AttributeError: 'int' object has no attribute 'strptime' 

datetimeオブジェクトを操作し、その形式を変更する方法はありますか(strptimeなど)?

+0

これはdatetime.timedeltaオブジェクトの対象です。それらをdatetime.datetimeに追加すると、別のdatetime.datetimeが返されます。 –

答えて

1

time1.hourtime3 therfore、1intで、intであるあなたは、このエラーを得ている理由である、intです。

最後の行にstrftimeも使用してください(strptimeではなく)。

あなたはrelativedeltatimedeltaを(コメントを参照)を使用することができますが、私はdatetime.replaceが容易になりますと仮定:これは確かに23:00後の時間のために失敗します

time1 = datetime.datetime.strptime("09/Sep/2015:08:00:00", "%d/%b/%Y:%H:%M:%S") 

time3 = time1.replace(hour=time1.hour + 1) 
print time3.strftime('%H') 
>> 09 

EDIT。より堅牢なソリューションについては、推奨されるアプローチをコメントに使用してください。

+0

また、timedelta:time3 = time1 + datetime.timedelta(hours = 1)を使用することもできます。 – vrs

+0

デルタオブジェクトを算術演算に使用し、replaceメソッドをセッターのように使用することをお勧めします(datetimesは変更不可) –

+0

@vrs問題それは '09'の代わりに '9'を返します。だから私はそれに取り組むためにstrftimeが必要です。 – user1165419

関連する問題