제로패딩이 없는 Python 데이트 타임 포맷
날짜와 시간에 제로 패딩을 사용하지 않는 Python 날짜 시간 인쇄 형식이 있습니까?
지금 사용하는 형식:
mydatetime.strftime('%m/%d/%Y %I:%M%p')
결과 : 02/29/2012 오후 05:03
희망 : 2/29/2012 오후 5:03
월을 '02'가 아닌 '2'로 표시하고 시간을 '5:03'으로 표시하는 형식은 무엇입니까?05:03 대신 PMPM'
위의 "all or none" 선행 0 측면을 피하기 위한 다른 대안은 필드 유형 앞에 마이너스를 두는 것입니다.
mydatetime.strftime('%-m/%d/%Y %-I:%M%p')
그러면 '4/10/2015 03:00AM'
다음이 됨: '4/10/2015 3:00AM'
원하는 경우 선택적으로 요일 앞에 마이너스를 넣을 수 있습니다.
편집: 마이너스 기능은 "Glibc notes" 아래의 리눅스 strtime manpage에서 언급된 GNU C 라이브러리("glibc")에서 유래합니다.
새로운 문자열 포맷 시스템은 다음과 같은 대안을 제공합니다.strftime
. 꽤 읽을 만하다고요 -- 사실은, 그것이 더 바람직할 수도 있습니다.strftime
그 점 때문에가 제로가 아닌도 없습니다.패드가 제로 패드가 아니라는 사실은 말할 것도 없습니다.
>>> '{d.month}/{d.day}/{d.year}'.format(d=datetime.datetime.now())
'3/1/2012'
미닛 필드에 패딩이 없어야 하므로 다음과 같은 작업을 수행할 수 있습니다.
>>> '{d.month}/{d.day}/{d.year} {d.hour}:{d.minute:02}'.format(d=now)
'3/1/2012 20:00'
'군대' 시간이 아닌 '정규' 시간을 원한다면 여전히 기준을 사용할 수 있습니다.strftime
명세자들도 마찬가지입니다.편리하게도, 우리의 목적을 위해,strftime
는 선두 0이 아닌 공백으로 패딩된 12시간 시간에 대한 코드를 제공합니다.
'{d.month}/{d.day}/{d.year} {d:%l}:{d.minute:02}{d:%p}'.format(d=now)
'4/4/2014 6:00PM'
이것은 다소 가독성이 떨어집니다.그리고 @mlissner가 지적했듯이,strftime
1900년 이전 날짜에 대해 일부(모두?) 플랫폼에서 장애가 발생합니다.
에서 사용할 수 있는 형식 지정 옵션datetime.strftime()
모두 제로 패드입니다.물론 자신의 포맷 기능을 롤링할 수도 있지만, 이 경우 가장 쉬운 해결책은 결과를 사후 처리하는 것일 수 있습니다.datetime.strftime()
:
s = mydatetime.strftime('%m/%d/%Y %I:%M%p').lstrip("0").replace(" 0", " ")
적절한 해결책이 아닌 승인된 답변(IMHO) 문서화된 적절한 방법:
리눅스에서 "#"은 "-"로 대체됩니다.
%-d, %-H, %-I, %-j, %-m, %-M, %-S, %-U, %-W, %-W, %-Y, %-Y
Windows에서 "-"는 "#"로 바뀝니다.
%#d, %#H, %#I, %#j, %#m, %#M, %#S, %#U, %#w, %#W, %#y, %#Y
#Linux
mydatetime.strftime('%-m/%d/%Y %-I:%M%p')
# Windows
mydatetime.strftime('%#m/%d/%Y %#I:%M%p')
출처 : https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx
Sagneta에 따르면 다음과 같습니다.윈도우즈의 # 해시 트릭은 네이티브 파이썬 실행 파일에서만 사용할 수 있습니다.이것은 cygwin 기반 python 구현에서는 작동하지 않습니다.
리눅스에 관한 Chris Freeman의 좋은 답변.
On windows, it's:
mydate.strftime('%#m/%#d/%Y')
Thought that might help.
In the official docs formating section:
- When used with the strptime() method, the leading zero is optional for formats %d, %m, %H, %I, %M, %S, %J, %U, %W, and %V. Format %y does require a leading zero.
그래서 사용.%d
일을 숫자로 파싱하면 자동으로 둘 다 파싱됩니다.07
&7
예를들면.
다른 여러 사람들이 언급한 것처럼, 윈도우에서 선행 0을 무시하려면 다음을 사용해야 합니다.%#d
대신에%-d
.
비즈니스 로직에서 플랫폼 스위치를 보지 않고 깨끗한 크로스 플랫폼 파이썬 코드를 작성하고자 하는 사람들을 위해 다음과 같은 정보를 제공합니다.Python3
Windows, Linux 및 기타(테스트된 Linux, Windows 및 FreeB) 모두에 대해 하나의 형식 문자열을 가질 수 있도록 지원하는 helperSD):
import os
from datetime import datetime
def dateToStr(d: datetime, fmt: str) -> str:
return d.strftime(fmt.replace('%-', '%#') if os.name == 'nt' else fmt)
dateToStr(datetime.now(), '%-m/%-d/%-Y')
참고로, 이것은 또 다른 것입니다.Whaaaaaaaat?
Python 의 기능입니다.왜 그들이 모든 플랫폼에 대해 표준 포맷 세트를 만들지 않았고 네이티브 플랫폼 기능을 사용하기 위해 선택적인 'use_native' 플래그를 추가하지 않았는지 이해할 수 없습니다.레거시 지원을 위해 반드시 지켜야 할 초기 설계 결정이었다고 생각합니다.
"%l" (that's a lower-case L) works for the hour (instead of "%I"). I only know this from another answer here
Python strftime - date without leading 0?
but unfortunately they don't have the code for the other elements of a date/time.
I use this:
D = str(datetime.now().day)
MM = str(datetime.now().month)
YYYY = str(datetime.now().year)
This, today, will return: 2, 12, 2021
ReferenceURL : https://stackoverflow.com/questions/9525944/python-datetime-formatting-without-zero-padding
'IT' 카테고리의 다른 글
AngularJs 블러에서 입력을 다시 렌더링하도록 강제하는 방법 (0) | 2023.10.20 |
---|---|
MySql이 mysql 서버를 다시 시작한 후 사용자 암호를 재설정합니다. (0) | 2023.10.20 |
'Observable' 유형에 'filter' 속성이 없습니다. (0) | 2023.10.20 |
tiny_mce_before_init를 사용하여 wordpress용 tiny MCE를 사용하는 사용자 정의 스타일로, 선택 항목을 중심으로 div를 추가하는 대신 각 목록 항목에 스타일을 추가합니다. (0) | 2023.10.20 |
string.Lower() 및 string에 연결합니다.아래쪽으로불변() (0) | 2023.10.20 |