[python] 파이썬 strftime-0이없는 날짜?

Python을 사용할 때 strftime날짜의 첫 번째 0을 10 일 이전에 제거하는 방법이 있습니까? 그래서01 이다 1? %그 것을 찾을 수 없습니까 ?

감사!



답변

실제로 나는 같은 문제가 있었고 %문자와 문자 사이에 하이픈을 추가 하면 선행 0을 제거 할 수 있음을 깨달았습니다 .

예를 들면 %Y/%-m/%-d.

이것은 Windows (Cygwin 포함)가 아닌 Unix (Linux, OS X)에서만 작동합니다. Windows에서는 #예 를 들어을 사용 %Y/%#m/%#d합니다.


답변

우리는 format파이썬 2.6 이후 메소드 의 출현으로 이런 종류의 일을 할 수 있습니다 .

>>> import datetime
>>> '{dt.year}/{dt.month}/{dt.day}'.format(dt = datetime.datetime.now())
'2013/4/19'

아마도 원래 질문의 범위를 벗어나더라도 더 흥미로운 형식의 경우 다음과 같은 작업을 수행 할 수 있습니다.

>>> '{dt:%A} {dt:%B} {dt.day}, {dt.year}'.format(dt=datetime.datetime.now())
'Wednesday December 3, 2014'

python3.6부터는 인라인 형식의 문자열 로 표현할 수 있습니다 .

Python 3.6.0a2 (v3.6.0a2:378893423552, Jun 13 2016, 14:44:21)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> dt = datetime.datetime.now()
>>> f'{dt:%A} {dt:%B} {dt.day}, {dt.year}'
'Monday August 29, 2016'


답변

http://docs.python.org/library/time.html% 에 따르면 일부 플랫폼은 문자와 문자 사이의 너비와 정밀도 사양 (예 : ‘d’와 같은)을 지원할 수 있지만 반드시 이식 할 수는 없습니다. 솔루션 (예 : 내 Mac에서는 작동하지 않습니다 ;-). 어쩌면 당신은 그것을 해결 한 후에 문자열 바꾸기 (또는 실제로 불쾌한 형식의 경우 RE)를 사용할 수 있습니까? 예 :strftime

>>> y
(2009, 5, 7, 17, 17, 17, 3, 127, 1)
>>> time.strftime('%Y %m %d', y)
'2009 05 07'
>>> time.strftime('%Y %m %d', y).replace(' 0', ' ')
'2009 5 7'


답변

다음strftime()GNU C 라이브러리에서 지원되는 수정 자의 설명서입니다 . (사람들이 이전에 말했듯이 이식성이 없을 수도 있습니다.) 관심있는 것은 다음과 같습니다.

  • %e대신 %d월의 선행 0을 공백으로 바꿉니다.

내 파이썬 (Linux)에서 작동합니다. 그것이 당신에게 효과가 있는지 모르겠습니다.


답변

>>> import datetime
>>> d = datetime.datetime.now()
>>> d.strftime('X%d/X%m/%Y').replace('X0','X').replace('X','')
'5/5/2011'


답변

Windows에서는 ‘% # m / % # d / % Y % # I : % M : % S % p’에서와 같이 ‘#’을 추가하십시오.

참조 : https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx


답변

파티에 꽤 늦었지만 %-d내 끝에서 작동합니다.

datetime.now().strftime('%B %-d, %Y')“2014 년 11 월 5 일” 과 같은 것을 생성

건배 🙂