반응형

개발을 하게 되면, 정말 필수적으로 데이터 핸들링을 하게 되는게 날짜와 시간이다. 파이썬으로 날짜 및 시간 데이터를 핸들링할 때 정말 많이 사용하는 라이브러리 중 하나인 datetime으로 날짜와 시간 데이터를 핸들링하는 방법에 대해 기록한다.


datetime 모듈

datetime 모듈은 날짜와 시간을 핸들링할 수 있도록 클래스를 제공한다. 즉, 날짜를 표현하기 위한 년, 월, 일을 표현하거나 날짜 형식 등을 바꿀 때 사용되는 모듈이다.

 

datetime 객체

datetime의 객체는 총 6가지로 구성이 되어 있다. 생성 방법은 아래와 같다.

 

1) date

datetime 모듈의 date 객체에 년(year), 월(month), 일(day)을 넣을경우 yyyy-mm-dd 형식으로 출력이 된다.

import datetime

print(datetime.date) # <class 'datetime.date'>
print(datetime.date(2023, 12, 7)) # 2023-12-07

 

2) time

time 객체는 시(hour), 분(minute), 초(second)를 입력할 경우 시:분:초 형태로 출력이 된다. 주의해야 할 점은 12시간이 아닌 24시간제로 출력이 된다.

import datetime

print(datetime.time(1, 12, 7)) # 01:12:07
print(datetime.time(13, 12, 7)) # 13:12:07

 

3) datetime

datetime 객체는 위의 1번과 2번인 date, time 객체의 모든 정보를 다 입력하면 연, 월, 일, 시, 분, 초 형태로 출력한다.

import datetime

print(datetime.datetime(2023, 12, 7, 13, 54, 30)) # 2023-12-07 13:54:30

 

4) timedelta

timedelta 객체는 특정 날짜를 기준으로 미래 날짜나 과거 날짜를 구할 수 있다.

timedelta에서 days 뿐만 아니라 seconds, microseconds, milliseconds, minutes, hours, weeks를 넣을 수 있다.

 

a. days

import datetime

today = datetime.date.today()
tomday = datetime.timedelta(days=30)

#현재 날짜
print(today) # 2023-12-07

#30일 후
print(today + tomday) # 2023-01-06

#30일 전
print(today - tomday) # 2023-11-07

 

b. weeks

import datetime

today = datetime.date.today()
tomday = datetime.timedelta(weeks=30)

#현재 날짜
print(today) # 2023-12-07

#30주 후
print(today + tomday) # 2023-07-04

#30주 전
print(today - tomday) # 2023-05-11

 

5) tzinfo

tzinfo 객체는 timezone을 tz로 축약한 것으로 타임존을 설정하는 객체라고 볼 수 있다.

import datetime

today = datetime.date.today()

print(today) #2023-12-07
print(datetime.datetime(today.year, today.month, today.day, 0, 0, 0, tzinfo=datetime.UTC)) #2023-12-07 00:00:00+00:00

 

 

datetime.strftime()

strftime()은 출력된 날짜를 문자열로 정해진 포맷에 따라 보여줄 때 사용한다. 예를 들어, YYYYmmdd형식을 YYYY-mm-dd 형식으로 나타내는 것처럼 말이다.

 

strftime()을 통한 날짜 포맷 변경 예시

import datetime


today = datetime.datetime.today()

print(today) # 2023-12-07 14:35:13.286782
print(datetime.datetime.strftime(today, '%Y%m%d')) #20231207
print(datetime.datetime.strftime(today, '%Y-%m-%d')) #2023-12-07
print(datetime.datetime.strftime(today, '%Y:%m:%d')) #2023:12:07

 

 

strftime()의 포맷 코드(지시자)

 

datetime으로 요일 출력하는 방법

datetime 모듈로 요일 출력하는 방법은 datetime의 weekday를 사용하면 된다. 0부터 6까지 리턴을 해주는데, 0부터 월요일로 맞추면 된다. 아래와 같이, 리스트에 저장을 하여 출력한다.

import datetime

week = ['월', '화', '수', '목', '금', '토', '일']

today = datetime.datetime.today()

print(today) # 2023-12-07 14:35:13.286782
print(week[today.weekday()]) #목

 

위와 같이, 리스트를 만들지 않고 영어로 요일을 출력할 수 있다. 위의 지시자 태그 중 하나인 A를 이용하면 된다.

import datetime

week = ['월', '화', '수', '목', '금', '토', '일']

today = datetime.datetime.today()

print(today) # 2023-12-07 14:35:13.286782
print(week[today.weekday()]) #목
print(today.strftime('%A')) #Thursday

 


참고

https://docs.python.org/ko/3/library/datetime.html

 

datetime — Basic date and time types

Source code: Lib/datetime.py The datetime module supplies classes for manipulating dates and times. While date and time arithmetic is supported, the focus of the implementation is on efficient attr...

docs.python.org

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기