파이썬 날짜 시간을 읽을 수있는 형식 날짜가있는 문자열로 바꾸려면 어떻게합니까?


171
t = e['updated_parsed']
dt = datetime.datetime(t[0],t[1],t[2],t[3],t[4],t[5],t[6]
print dt
>>>2010-01-28 08:39:49.000003

어떻게 문자열로 바꾸나요? :

"January 28, 2010"

8
dt = datetime.datetime(*t[:7])

답변:


242

datetime 클래스에는 strftime 메소드가 있습니다. Python 문서는 허용되는 다양한 형식을 문서화합니다.

이 특정 예제의 경우 다음과 같습니다.

my_datetime.strftime("%B %d, %Y")

1
멍청한 질문 ... strftime파이썬 2와 3 의 차이점은 무엇입니까?
jww

그리고 어떤 식 으로든
Xanlantos

112

다음은 파이썬의 일반적인 형식 지정 기능을 사용하여 동일한 작업을 수행하는 방법입니다.

>>>from datetime import datetime
>>>"{:%B %d, %Y}".format(datetime.now())

여기에 사용 된 형식 문자는 strftime에 사용 된 형식 문자와 동일 합니다. : 형식 지정자 의 선두 를 놓치지 마십시오 .

대부분의 경우 strftime () 대신 format ()을 사용하면 코드를 더 읽기 쉽고 작성하기 쉽고 형식화 된 출력이 생성되는 방식과 일치시킬 수 있습니다.

>>>"{} today's date is: {:%B %d, %Y}".format("Andre", datetime.now())

위의 다음 strftime () 대안과 비교하십시오 ...

>>>"{} today's date is {}".format("Andre", datetime.now().strftime("%B %d, %Y"))

또한 다음은 작동하지 않습니다 ...

>>>datetime.now().strftime("%s %B %d, %Y" % "Andre")
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    datetime.now().strftime("%s %B %d, %Y" % "Andre")
TypeError: not enough arguments for format string

등등...


1
이 경우 strftime ()보다 format ()을 사용하면 어떤 이점이 있는지 궁금합니다. 두 방법 모두 개인 취향 이외의 이점이 있습니까? 성능 차이는 무엇입니까?
Andre

2
@ 안드레 귀하의 질문에 감사드립니다! 개인적인 선호는 종종 경험에 의해 인도됩니다. strftime ()보다 format ()을 선호하는 이유는 업데이트 된 답변을 참조하십시오. 성능과 파이썬은 잘 어울리지 않는 두 단어입니다. 파이썬을 사용하기로 결정했다면 성능에 지나치게 신경 쓰지 않을 것입니다. 성능이 필요할 때 정적으로 유형이 지정된 고성능 언어를 사용합니다.
Autodidact

1
대부분의 경우 형식 방법이 더 간단합니다. 비교 : print 'Today is {:%B %d, %Y}'.format(datetime.now())print 'Today is {}'.format(datetime.now().strftime('%B %d, %Y'). 어쨌든 format () 메서드를 사용하는 경우 날짜 형식에도 사용하지 않겠습니까?
ChaimG

30

Python 3.6 이상에서 f- 문자열 사용

from datetime import datetime

date_string = f'{datetime.now():%Y-%m-%d %H:%M:%S%z}'

"SyntaxError : invalid syntax"구문 오류가 발생합니다. 좀 더 자세히 설명해 주시겠습니까?
sajid

확인. Python 3.5.1이 있습니다. 그 이유입니다. 설명해 주셔서 감사합니다.
sajid

21

아주 오래된 질문입니다. 그러나 새로운 f- 문자열 (파이썬 3.6부터 시작)에는 새로운 옵션이 있습니다. 완전성을 위해 여기에 :

from datetime import datetime

dt = datetime.now()

# str.format
strg = '{:%B %d, %Y}'.format(dt)
print(strg)  # July 22, 2017

# datetime.strftime
strg = dt.strftime('%B %d, %Y')
print(strg)  # July 22, 2017

# f-strings in python >= 3.6
strg = f'{dt:%B %d, %Y}'
print(strg)  # July 22, 2017

strftime()strptime()행동은 형식 지정자의 의미를 설명합니다.



9

Python datetime 객체에는 읽을 수있는 형식으로 인쇄되는 메소드 속성이 있습니다.

>>> a = datetime.now()
>>> a.ctime()
'Mon May 21 18:35:18 2018'
>>> 

이것은 DateTime을 읽을 수있는 형식으로 가져 오는 가장 쉽고 빠른 방법 중 하나입니다.
Mujeeb Ishaque

-2

이것은 날짜 형식입니까?

def format_date(day, month, year):
        # {} betekent 'plaats hier stringvoorstelling van volgend argument'
        return "{}/{}/{}".format(day, month, year)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.