파이썬 datetime 사용법

Ddudduu·2023년 3월 1일
0

파이썬에서 날짜 다루는법을 정리해보려한다.

먼저 import datetime 으로 datetime 을 사용할 수 있다.

date

1. date 객체 생성

입력

from datetime import date

day1 = date(2022,12,24)
print(day1)

datetime.date(연,월,일) 로 객체를 생성할 수 있다.
date 객체는 출력하면

2022-12-24

로 출력된다!

2. date.today()

today() 로 오늘 날짜를 가져올 수 있다.

today = date.today()
print(today.year)
print(today.month)
print(today.day)
print('weekday: '+ str(today.weekday()))

date 객체의 year, month, day 값을 가져올 수 있고 weekday() 는 월요일: 0, 화요일: 1 ~ 일요일: 6 을 반환한다.
딕셔너리를 이용해 요일 판단하는 문제를 풀 때 사용하면 된다!

3. 날짜 비교

day1 = date(2022,12,24)
today = date.today()
print(day1 < today)
True

두 날짜 중 나중 날짜에 더 큰 값을 부여한다. 대소 비교로 날짜를 비교할 수 있다.

4. 날짜 덧셈, 뺄셈

며칠, 몇달 후의 날짜를 구하고 싶을 때 사용한다.

from datetime import date, timedelta

today = date.today()
one_week = timedelta(weeks = 1)
one_week_later = today + one_week
diff = one_week_later - today
print(diff.days)

timedelta() 로 기간에 대한 객체를 생성할 수 있다. 오늘부터 일주일 뒤의 날짜를 구하고 싶다면 timedelta(weeks = 1) 혹은 timedelta(days = 7) 객체를 더해주면 된다.

두 date 객체의 뺄셈 후, days 로 접근해 날짜 차이를 계산할 수 있다.

5. 날짜 변경

replace() 로 연, 월, 일을 대체할 수 있다.

day1 = date(2022,12,24)
day2 = day1.replace(year= 2020, month = 3)
print(day1)
print(day2)
2022-12-24
2020-03-24

6. 문자열로 표현

fromisoformat()

YYYY-MM-DD 형태로 날짜를 표현하는 걸 ISO format 이라고 한다.
이 형태로부터 date 객체를 생성할 수도 있다.

day2 = date.fromisoformat('2022-07-15')
print(day2)
2022-07-15

iso 형식인데 str 형으로 주어지는 경우 사용하면 된다!

isoformat()

date 객체를 iso 형태로 뽑아내는 것도 가능하다.

today = date.today()
print(today.isoformat())
2023-02-28
strftime()

원하는 양식에 맞게 date 를 출력할 수 있다.
연도
%Y : 2023
%y : 23


%m : 03
%B : March
%b : Mar


%d : 01

요일
%A : Wednesday
%a : Wed

today = date.today()
print(today.strftime('%Y %m %B %d'))
print(today.strftime('%Y %m %b %d'))
print(today.strftime('%y %m %B %d'))
print(today.strftime('%y %m %b %d'))
print(today.strftime('%Y %m %B %d %A'))
print(today.strftime('%Y %m %B %d %a'))
2023 03 March 01
2023 03 Mar 01
23 03 March 01
23 03 Mar 01
2023 03 March 01 Wednesday
2023 03 March 01 Wed

time

datetime 에서 time 으로 시간도 다룰 수 있다.

1. time 객체 생성

from datetime import time

time1 = time(hour = 10, minute=34, second = 47)
print(time1)
print(time1.hour)
print(time1.minute)
print(time1.second)
10:34:47
10
34
47

객체를 생성하는 것은 date 와 동일하다! 대신 hour, minute, second 를 지정해줘야한다.
hour 은 0~23 사이의 정수여야 한다.

2. replace(), 산술 연산

time1 = time(hour = 10, minute = 34, second = 47)
time2 = time(hour = 14, minute = 12)
print(time1 > time2)

time2.replace(hour = 4)
print(time1 > time2)
False
False

사용법은 date 와 동일하다.
replace() 로 hour, minute, second 를 변경할 수 있고!
더 나중 시간에 큰 값을 부여해 대소 비교를 할 수 있다.

3. 문자열 표현

fromisoformat()
isoformat()
time1 = time(hour = 14, minute = 35, second = 28)
time2 = time.fromisoformat('08:30:17')
print(time1.isoformat())
print(time2)
14:35:28
08:30:17

date 와 동일하게 isoformat 으로 표현할 수 있고, isoformat 으로부터 객체를 생성할 수도 있다.

strftime()

시간
%H : 14
%l : 2


%M : 35


%S : 28

datetime

1. datetime 객체 생성

객체 생성 방법은 위와 동일하지만 now() 함수로 현재 날짜와 시간 정보를 둘 다 가져올 수 있다!

from datetime import datetime

dtNow = datetime.now()
dt1 = datetime(year = 2023, month = 8, day = 24, hour = 19, minute = 30, second = 45)
print(dtNow)
print(dt1)
2023-03-01 05:52:55.745243
2023-08-24 19:30:45

2. combine()

date 객체와 time 객체를 각각 생성하고 datetime.combine() 으로 두 개를 합쳐 하나의 datetime 객체로 만드는 것도 가능하다.

date1 = date(year = 2023, month = 8, day = 24)
time1  = time(hour = 19, minute = 30, second = 45)
combinedDatetime = datetime.combine(date1, time1)

3. strptime()

문자열 -> datetime
으로 바꿔주는 함수이다.

dt = datetime.strptime('2023/03/01', '%Y/%m/%d')
print(dt)
2023-03-01 00:00:00

strftime() : datetime, date, time -> str
strptime() : str -> datetime

profile
Android

0개의 댓글