파이썬에서 현재 시간에 시간을 추가하는 방법


158

다음과 같이 현재 시간을 얻을 수 있습니다.

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

결과

'19:43:20'

이제 9 hours위의 시간 에 추가하려고하는데 어떻게 파이썬에서 현재 시간에 시간을 추가 할 수 있습니까?


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

6
@Braza OP는 방금 수락하기로 선택하지 않았습니다. 부작용이나 버그가 없습니다.
Jon Clements

@JonClements 답장을 보내 주셔서 감사합니다 :). 나는 그것을 테스트하고 확인합니다.
브라자

3
이것은 DST 안전하지 않습니다.
Antti Haapala

1
질문은 시간 을 추가 하는 방법을 묻지 만 시간을 빼는 방법은 두 가지 방법으로 수행 할 수 있습니다. 1) 더하기 연산자 ( -) 대신 빼기 연산자 ( )를 사용하십시오 +. 문서에 따르면 " timedelta개체는 날짜와 datetime개체로 특정 덧셈과 뺄셈을 지원 합니다."2) timedelta매개 변수 중 하나에 음수 값을 전달합니다 . 문서 에 따르면 "인수는 정수, 정수 또는 부동 수일 수 있으며 양수 또는 음수 일 수 있습니다."
The Red Pea

20

가져 오기 날짜timedelta를 :

>>> 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'

파이썬이 날짜 및 시간 필드를 처리하는 방법을 더 잘 이해하기 위해 참조 strptime하고 strftime동작 할 수 있습니다.


파이썬 문서에 대한 링크는 날짜 / 시간 구문 분석 및 형식화에 대한 통찰력을 제공합니다 .
hc_dev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.