IT이야기

Python strftime - 선행 0이 없는 날짜?

cyworld 2022. 3. 25. 21:52
반응형

Python strftime - 선행 0이 없는 날짜?

Python 사를 strftime, 즉 10일 이전이라면 날짜의 처음 0을 제거할 방법이 있는가?01이다1? 찾을 수 없음%그런 거에 대해서?

고마워!

사실 나도 같은 문제가 있었는데, 그 사이에 하이픈을 붙이면 그 사실을 깨달았다.%그리고 글자는 선행 0을 제거할 수 있다.

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

이는 Windows(Cygwin 포함)가 아닌 Unix(리눅스, OS X)에서만 작동한다.#, 예:%Y/%#m/%#d.

python2 이후 방법이 등장하면서 우리는 이런 종류의 일을 할 수 있다.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에 따르면, 편지(예: 월 1일 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 으로 한다.

내 Python(Linux에서.나는 그것이 너의 몸에 잘 맞을지 모르겠다.

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

윈도우즈의 경우 '%#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일"과 같은 것을 생산한다.

건배 :)

나는 장고 템플릿 날짜 포맷 필터가 빠르고 쉽다고 생각한다.선행 0을 제거한다.장고 모듈을 가져오는 것을 꺼리지 않는다면, 그것을 확인해 보십시오.

http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date

from django.template.defaultfilters import date as django_date_filter
print django_date_filter(mydate, 'P, D M j, Y')    

보다.-벨로우:

>>> from datetime import datetime
>>> datetime.now().strftime('%d-%b-%Y')
>>> '08-Oct-2011'
>>> datetime.now().strftime('%-d-%b-%Y')
>>> '8-Oct-2011'
>>> today = datetime.date.today()
>>> today.strftime('%d-%b-%Y')
>>> print(today)

단순하게 사용하다replace다음과 같은 경우:

(datetime.date.now()).strftime("%Y/%m/%d").replace("/0", "/")

출력:

'2017/7/21'

을 위해%d다음을 사용하여 정수로 변환할 수 있다.int()그러면 자동으로 선행 0이 제거되고 정수가 된다.그런 다음 다음을 사용하여 문자열로 다시 변환할 수 있음str().

예를 들어, "%-d"는 동일한 OS의 서로 다른 버전 사이에서도 휴대할 수 없다.더 나은 해결책은 날짜 구성요소를 개별적으로 추출하여 날짜별 포맷 연산자와 각 구성요소에 대한 날짜 속성 액세스 사이에서 선택하는 것이다.

e = datetime.date(2014, 1, 6)
"{date:%A} {date.day} {date:%B}{date.year}".format(date=e)

왜냐하면 Python은 정말로 C언어를 부르기 때문이다.strftime(3)플랫폼에서 기능할 경우 선행 0을 제어하는 데 사용할 수 있는 형식 문자가 있을 수 있음; 시도해 보십시오.man strftime그리고 한번 봐봐.그러나 물론 파이톤 매뉴얼이 상기시켜 주듯이 결과는 휴대할 수 없을 것이다. :-)

나는 새로운 스타일을 사용해 볼 것이다.datetime대신 다음과 같은 속성을 가진 개체t.year그리고t.month그리고t.day, 그리고 그것들은 일반적이고 고출력 포맷을 통해 넣는다.%선행 0의 제어를 지원하는 연산자.자세한 내용은 http://docs.python.org/library/datetime.html을 참조하십시오.더 좋은 것은, 더 좋은 것을 사용하라."".format()만약 당신의 파이썬이 그것을 가지고 있고 더 현대적이면 연산자; 그것은 숫자에 대한 많은 포맷 옵션도 가지고 있다.http://docs.python.org/library/string.html#string-formatting을 참조하십시오.

알렉스의 방법에 따라, 이는 스트링 시작 사례와 스페이스 후 사례 모두에 적용된다.

re.sub('^0|(?<= )0', '', "01 January 2000 08:00am")

.format 또는 %-d보다 이것을 더 좋아한다. 왜냐하면 이것은 크로스 플랫폼이고 스트립타임을 계속 사용할 수 있기 때문이다("11월"이나 "월"과 같은 것을 얻기 위해서).

오래된 질문이지만, %l (L 소문자 L)은 스트립타임에 나에게 효과가 있었다: 그러나, 내가 찾은 파이썬 문서에 나와 있지 않기 때문에, 이것은 모든 사람에게 효과가 없을 수도 있다.

import datetime
now = datetime.datetime.now()
print now.strftime("%b %_d")

만약 우리가 0을 리드하지 않고 오직 날짜만 가져오기를 원한다면 우리는 할 수 있다.

d = date.today()
day = int(d.strftime("%d"))

Python 3.6+:

from datetime import date
today = date.today()
text = "Today it is " + today.strftime(f"%A %B {today.day}, %Y")

늦었지만 간단한 목록만 잘라서 하면 일이 잘 될 거야.

today_date = date.today().strftime('%d %b %Y')
if today_date[0] == '0':
    today_date = today_date[1:]

참조URL: https://stackoverflow.com/questions/904928/python-strftime-date-without-leading-0

반응형