Programming

마이크로 초 구성 요소없이 문자열로 파이썬 날짜 시간

procodes 2020. 2. 26. 22:46
반응형

마이크로 초 구성 요소없이 문자열로 파이썬 날짜 시간


현재 암스테르담 (!) 시간 문자열 만 포함하는 Bitbucket API 응답에 UTC 시간 문자열을 추가하고 있습니다. 다른 곳에서 반환되는 UTC 시간 문자열과 일관성을 유지하기 위해 원하는 형식이 2011-11-03 11:07:04뒤에옵니다 ( +00:00하지만 그다지 독특하지는 않습니다).

(예 : 문자열을 만들 수있는 가장 좋은 방법은 무엇입니까 없이 A로부터 마이크로 초 구성 요소)를 datetime 마이크로 초 구성 요소는?

>>> import datetime
>>> print unicode(datetime.datetime.now())
2011-11-03 11:13:39.278026

가능한 답변으로 나에게 발생한 최상의 옵션을 추가하지만 더 우아한 해결책이있을 수 있습니다.

편집 : 현재 시간을 실제로 인쇄하고 있지 않다는 점을 언급해야합니다 datetime.now. 빠른 예를 들었습니다. 따라서 솔루션은 datetime수신 하는 인스턴스에 마이크로 초 구성 요소가 포함 된다고 가정해서는 안됩니다 .


datetime표준 형식과 다른 특정 형식으로 오브젝트 를 형식화 하려면 해당 형식을 명시 적으로 지정하는 것이 가장 좋습니다.

>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
'2011-11-03 18:21:26'

지시문 에 대한 설명은 설명서를datetime.strftime() 참조하십시오 %.


>>> import datetime
>>> now = datetime.datetime.now()
>>> print unicode(now.replace(microsecond=0))
2011-11-03 11:19:07

파이썬 3.6에서 :

from datetime import datetime
datetime.datetime.now().isoformat(' ', 'seconds')
'2017-01-11 14:41:33'

https://docs.python.org/3.6/library/datetime.html#datetime.datetime.isoformat


이것이 내가하는 방법입니다. ISO 형식 :

import datetime
datetime.datetime.now().replace(microsecond=0).isoformat()
# Returns: '2017-01-23T14:58:07'

ISO 형식을 원하지 않으면 'T'를 바꿀 수 있습니다.

datetime.datetime.now().replace(microsecond=0).isoformat(' ')
# Returns: '2017-01-23 15:05:27'

또 다른 옵션 :

>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S")
'2011-11-03 11:31:28'

기본적으로 현지 시간을 사용하므로 UTC가 필요한 경우 다음을 사용할 수 있습니다.

>>> time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
'2011-11-03 18:32:20'

슬라이싱을 통해 원하는 처음 19자를 유지하십시오.

>>> str(datetime.datetime.now())[:19]
'2011-11-03 14:37:50'

모든 datetime.datetime인스턴스에 마이크로 초 구성 요소가있는 것은 아니므로 (즉, 0 일 때) 문자열을 "."로 분할 할 수 있습니다. 항상 작동하는 첫 번째 항목 만 가져옵니다.

unicode(datetime.datetime.now()).partition('.')[0]

우리는 아래와 같은 것을 시도 할 수 있습니다

import datetime

date_generated = datetime.datetime.now()
date_generated.replace(microsecond=0).isoformat(' ').partition('+')[0]

나는 보통 :

import datetime
now = datetime.datetime.now()
now = now.replace(microsecond=0)  # To print now without microsecond.

# To print now:
print(now)

산출:

2019-01-13 14:40:28

나는 이것이 가장 간단한 방법이라는 것을 알았다.

>>> t = datetime.datetime.now()
>>> t
datetime.datetime(2018, 11, 30, 17, 21, 26, 606191)
>>> t = str(t).split('.')
>>> t
['2018-11-30 17:21:26', '606191']
>>> t = t[0]
>>> t
'2018-11-30 17:21:26'
>>> 

이것은 내가 이해할 수 있고 더 잘 기억하기 때문에 사용합니다 (날짜 시간 형식도 원하는대로 사용자 정의 할 수 있습니다) :-

import datetime
moment = datetime.datetime.now()
print("{}/{}/{} {}:{}:{}".format(moment.day, moment.month, moment.year,
                                 moment.hour, moment.minute, moment.second))

참고 URL : https://stackoverflow.com/questions/7999935/python-datetime-to-string-without-microsecond-component



반응형