답변:
실제로 나는 같은 문제가 있었고 %
문자와 문자 사이에 하이픈을 추가 하면 선행 0을 제거 할 수 있음을 깨달았습니다 .
예를 들면 %Y/%-m/%-d
.
이것은 Windows (Cygwin 포함)가 아닌 Unix (Linux, OS X)에서만 작동합니다. Windows에서는 #
예 를 들어을 사용 %Y/%#m/%#d
합니다.
ValueError: '-' is a bad directive in format '%b %-d, %Y'
. OSX, Python 2.7.
%#d
Windows에서 동일하게 작동
우리는 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'
time.strftime('%A %B %d, %Y')
(이제 영어 로케일) Tuesday October 07, 2014
.
__format__
은 그런 것을 쓸 수 있는 매우 흥미로운 후크를 지정 합니다.
'{dt.hour}'
24 시간 시계 를 사용 한다는 것 입니다. (. 두 번째 옵션을 사용하면 여전히 '{%#I}'
Windows와 '{%-I}'
Unix 에서 다시 사용할 수 있습니다 .
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'
.replace('X0','X').replace('X','')
? 그냥 .replace('X0', '')
하시면 좋을 것입니다.
Windows에서는 '% # m / % # d / % Y % # I : % M : % S % p'에서와 같이 '#'을 추가하십시오.
파티에 꽤 늦었지만 %-d
내 끝에서 작동합니다.
datetime.now().strftime('%B %-d, %Y')
"2014 년 11 월 5 일" 과 같은 것을 생성
건배 :)
ValueError: Invalid format string
내 Windows 시스템에서.
Django 템플릿 날짜 형식 필터가 빠르고 쉽다는 것을 알았습니다. 선행 0을 제거합니다. Django 모듈을 가져 오는 것이 마음에 들지 않으면 확인하십시오.
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')
import django.conf
django.conf.settings.configure()
다음을 살펴보십시오 -
.
>>> 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()
.
파이썬은 실제로 strftime(3)
플랫폼 에서 C 언어 함수를 호출하기 때문에 선행 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을 참조 하십시오 .
import datetime
now = datetime.datetime.now()
print now.strftime("%b %_d")
ValueError: '_' is a bad directive in format '%a %b %_d %H:%M:%S %Y'
python 3.5 사용