Pythonで現在の時間に時間を追加する方法


158

私は現在の時刻を以下のように取得できます:

from datetime import datetime
str(datetime.now())[11:19]

結果

'19:43:20'

今、私は9 hours上記の時間に追加しようとしていますが、Pythonで現在の時間に時間を追加するにはどうすればよいですか?


12
現在の時刻がそのようにフォーマットするには、見ていdatetime.now().strftime('%H:%M:%S')
eumiro

回答:


367
from datetime import datetime, timedelta

nine_hours_from_now = datetime.now() + timedelta(hours=9)
#datetime.datetime(2012, 12, 3, 23, 24, 31, 774118)

次に、文字列フォーマットを使用して、関連する部分を取得します。

>>> '{:%H:%M:%S}'.format(nine_hours_from_now)
'23:24:31'

日時のみをフォーマットする場合は、以下を使用できます。

>>> format(nine_hours_from_now, '%H:%M:%S')
'23:24:31'

または、@ eumiroがコメントで指摘したように- strftime


なぜこれがベストアンサーではないのですか?副作用はありますか?報告されていないバグ?
Braza 2016年

6
OPの@Brazaは、それを受け入れることを選択していません。副作用やバグはありません。
Jon Clements

@JonClementsお返事ありがとうございます:) 私はそれをテストし、確認しました。
Braza 2016年

3
ただし、これはDSTセーフではありません。
Antti Haapala

1
時間を加算する方法を質問しますが時間の減算は2つの方法で行うことができます。1)加算演算子(-)の代わりに減算演算子()を使用し+ます。ドキュメントによれば、「timedeltaオブジェクトは日付とdatetimeオブジェクトを使用した特定の加算と減算をサポートします」2)任意のtimedeltaパラメータに負の値を渡します。ドキュメントによれば、「引数は、int、long、またはfloatであり、正または負の場合があります。」
Red Pea

20

日時時間差をインポート:

>>> from datetime import datetime, timedelta
>>> str(datetime.now() + timedelta(hours=9))[11:19]
'01:41:44'

しかし、より良い方法は:

>>> (datetime.now() + timedelta(hours=9)).strftime('%H:%M:%S')
'01:42:05'

Pythonが日付と時刻のフィールドを処理する方法をよりよく理解するためにstrptimestrftime動作を参照できます


Pythonドキュメントへのリンクは、日付/時刻の解析とフォーマットに関する洞察を提供します
hc_dev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.