파이썬

파이썬 datetime 모듈로 초간단 날짜 표현하기

by nanumi posted Sep 11, 2021
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

파이썬 datetime 모듈로 초간단 날짜 표현하기

 

 

from datetime import datetime

dt='2019-0909'
if '-' in dt:
    dt=dt.replace('-','')
print(type(dt))                                     ## 원본 문자열값 출력
print(dt)                                           ## 원본 문자열의 타입 확인

dtt=datetime(int(dt[:4]),int(dt[5:6]),int(dt[7:8])) ## 문자변수값을 정수화하여 날짜형식으로 변환
dtt=datetime.date(dtt)                              ## 날짜형식을 순수날짜만 나오게 변환
print(dtt)                                          ## 결과값 확인
print(type(dtt))                                    ## 날짜타입인지 출력하여 확인

 

 

 

파이썬3.6 에서 날짜와 시간을 제공하는 datetime 모듈이 있다. 날짜 및 시간 계산을 지원한다. 

 

* Available Type

datetime.date         # 날짜만 저장

datetime.time         # 시간만 저장

datetime.datetime   # 날짜와 시간을 저장

datetime.timedelta  # 시간 구간 정보

datetime.tzinfo       # 두 날짜, 시간 또는 날짜 시간의 인스턴스 객체 간 차이를 마이크로 초 해상도로 나타내는 기간

datetime.timezone  # tzinfo 추상 기본 클래스를 UTC의 고정 offset으로 구현하는 클래스 

 

 

6가지의 타입 중 현재 진행중인 프로젝트에서 필요한 timedeltadatedatetime 클래스를 공부해보면서 정리를 해보았다.

 

 

 

from datetime import datetime

datetime.strptime("2018-01-31", "%Y-%m-%d")

결과는

 
datetime.datetime(2018, 1, 31, 0, 0)

문자열 형식 코드의 지시문은 참조 용으로 여기에 나열되어 있습니다.

지령 의미
%a 로케일의 약칭으로 평일. 일요일, 월,…, 토 (en_US); 따라서 Mo,…, Sa (de_DE)
%A 로케일의 전체 이름으로 평일. 일요일, 월요일,…, 토요일 (en_US); Sonntag, Montag,…, Samstag (de_DE)
%w 평일을 10 진수로 표시합니다. 여기서 0은 일요일이고 6은 토요일입니다. 0, 1,…, 6
%d 0으로 채워진 10 진수로 표시되는 요일입니다. 01, 02,…, 31
%b 로캘의 약식 이름 인 월입니다. 1 월, 2 월,…, 12 월 (en_US); 1 월, 2 월,…, Dez (de_DE)
%B 로케일의 전체 이름으로 월. 1 월, 2 월,…, 12 월 (en_US); 1 월, 2 월,…, Dezember (de_DE)
%m 0으로 채워진 10 진수로 된 월입니다. 01, 02,…, 12
%y 세기가없는 연도는 0으로 채워진 10 진수입니다. 00, 01,…, 99
%Y 십진수로 세기를 가진 년. 0001, 0002,…, 2013, 2014,…, 9998, 9999
%H 0으로 채워진 10 진수로 표시되는 시간 (24 시간제)입니다. 00, 01,…, 23
%I 0으로 채워진 10 진수로 표시되는 시간 (12 시간제)입니다. 01, 02,…, 12
%p 로케일은 AM 또는 PM 에 해당합니다. 오전, 오후 (en_US), 오전, 오후 (de_DE)
%M 0으로 채워진 10 진수로 분. 00, 01,…, 59
%S 0은 0으로 채워진 10 진수입니다. 00, 01,…, 59
%f 왼쪽에 0으로 채워진 10 진수의 마이크로 초입니다. 000000, 000001,…, 999999
%z ± HHMM [SS] 형식의 UTC 오프셋 (객체가 순진한 경우 빈 문자열). (빈), +0000, -0400, +1030
%Z 시간대 이름 (객체가 순진한 경우 빈 문자열). (빈), UTC, EST, CST
%j 0으로 채워진 10 진수로 표시되는 연도입니다. 001, 002,…, 366
%U 0으로 채워진 10 진수로 표시되는 연중 주 번호 (일요일의 첫 번째 요일)입니다. 첫 번째 일요일 이전의 새해의 모든 날은 0 주로 간주됩니다. 00, 01,…, 53
%W 연도의 주 번호 (월요일의 첫 번째 요일)를 10 진수로 나타냅니다. 첫 번째 월요일 이전의 새해의 모든 날은 0 주로 간주됩니다. 00, 01,…, 53
%c 로케일의 적절한 날짜 및 시간 표현 화요일 1988 년 8 월 16 일 21:30:00 (en_US); 1988 년 8 월 16 일 21:30:00 (de_DE)
%x 로케일의 적절한 날짜 표현. 08/16/88 (없음); 08/16/1988 (ko_KR); 16.08.1988 (de_DE)
%X 로케일의 적절한 시간 표현. 21:30:00 (ko_KR); 21 : 30 : 00 (de_DE)
%% 리터럴 '%'문자. %

파이썬 datetime.strptime()예제

7-May-2013 datetime 형식

 
from datetime import datetime

dateString = "7-May-2018"
dateFormatter = "%u-%b-%Y"
datetime.strptime(dateString, dateFormatter)

출력:

 
datetime.datetime(2013, 5, 1, 0, 0)

31/12/2018 datetime 형식

 
from datetime import datetime

dateString = "31/12/2013"
dateFormatter = "%d/%m/%Y"
datetime.strptime(dateString, dateFormatter)

출력:

 
datetime.datetime(2013, 12, 31, 0, 0)

Mon, July 16 2018 datetime 형식

 
from datetime import datetime

dateString = "31/12/2013"
dateFormatter = "%d/%m/%Y"
datetime.strptime(dateString, dateFormatter)

출력:

 
datetime.datetime(2018, 7, 16, 0, 0)

Monday, July 16, 2018 20:01:56 datetime 형식

 
from datetime import datetime

dateString = "Monday, July 16, 2018 20:01:56"
dateFormatter = "%A, %B %d, %Y %H:%M:%S"
datetime.strptime(dateString, dateFormatter)

출력:

 
datetime.datetime(2018, 7, 16, 20, 1, 56)

 


현재날짜를 표현해봅시다.

d = datetime.datetime.now()
print (d.year,'년 ', d.month,'월 ', d.day,' 일')
print (d.hour,'시 ',d.minute,'분 ',d.second,'초')

 

 

파이썬 datetime 오브젝트date 오브젝트의 strftime() 메서드를 사용해 날짜 형식을 변환하는 방법을 알아보겠습니다.

strftime() 메서드에 주로 사용되는 서식을 먼저 살펴보겠습니다.

◆ %d : 0을 채운 10진수 표기로 날짜를 표시
◆ %m : 0을 채운 10진수 표기로 월을 표시
◆ %y : 0을 채운 10진수 표기로 2자리 년도
◆ %Y : 0을 채운 10진수 표기로 4자리 년도
◆ %H : 0을 채운 10진수 표기로 시간 (24시간 표기)
◆ %I : 0을 채운 10진수 표기로 시간 (12시간 표기)
◆ %M : 0을 채운 10진수 표기로 분
◆ %S : 0을 채운 10진수 표기로 초
◆ %f : 0을 채운 10진수 표기로 마이크로 초 (6자리)
◆ %A : locale 요일
◆ %a : locale 요일 (단축 표기)
◆ %B : locale 월
◆ %b : locale 월 (단축 표기)
◆ %j : 0을 채운 10진수 표기로 년중 몇 번째 일인지 표시 
◆ %U : 0을 채운 10진수 표기로 년중 몇 번째 주인지 표시 (일요일 시작 기준)
◆ %W : 0을 채운 10진수 표기로 년중 몇 번째 주인지 표시 (월요일 시작 기준)

 

%A, %a, %B, %b는 locale 설정에 따라 한국어나 영어 등 출력하는 문자열이 다릅니다.

 

strftime() 메서드에 서식을 지정해 날짜 형식을 변환해보겠습니다.

import datetime

dt_now = datetime.datetime.now()
d_today = datetime.date.today()

print(dt_now.strftime('%Y-%m-%d %H:%M:%S'))
# 2020-09-02 11:35:16

print(d_today.strftime('%y%m%d'))
# 200902

print(d_today.strftime('%Y/%m/%d'))
# 2020/09/02

print(d_today.strftime('%A, %B %d, %Y'))
# Wednesday, September 02, 2020

print(d_today.strftime('%a, %b %d, %Y'))
# Wed, Sep 02, 2020

print('날짜 번호(1년중 며칠째인지 / 1월1일 은 001):', d_today.strftime('%j'))
print('주 번호(일요일 기준 / 1월 첫번째 주 00):', d_today.strftime('%U'))
print('주 번호(월요일 기준 / 1월 첫번째 주 00):', d_today.strftime('%W'))
# 날짜 번호(1년중 며칠째인지 / 1월1일 은 001): 246
# 주 번호(일요일 기준 / 1월 첫번째 주 00): 35
# 주 번호(월요일 기준 / 1월 첫번째 주 00): 35

 

strftime() 원하는 서식을 지정해 날짜 형식을 변경할 수 있습니다.

또는 1년 중 며칠째인지, 몇 주째인지 계산하고 싶은 경우에도 서식을 지정해 간단히 계산할 수 있습니다.

 


Articles

2 3 4 5 6