본문 바로가기
Python tips

파이썬 datetime

by tenjobs 2024. 2. 15.
import datetime

 

1. datetime.datetime

# initialize
지금 = datetime.datetime.now()
특정일시 = datetime.datetime(년, 월, 일)

## 특정일시 선언
# 년, 월, 일은 필수 값
# 이외의 시, 분, 초는 인자 값을 주지 않으면 0​

 

2. datetime.time

# return datetime.time(0, 0)
최소시각 = datetime.time.min
최소시각 = datetime.time.min()
최소시각 = datetime.datetime.min.time()

# return datetime.time(23, 59, 59, 999999)
최대시각 = datetime.time.max
최대시각 = datetime.time.max()
최대시각 = datetime.datetime.max.time()

## PS
# datetime.datetime.min.time
# datetime.datetime.max.time
# 해당 코드는 <built-in method time of datetime.datetime object at 0x000001D2588DB660> 리턴한다.​

 

3. datetime, str 변환

# datetime -> str
# 년월일시분초는 각각 YmdHMS와 매핑된다.
# 원하는 문자열 형태에 %매핑문자를 포함해서 입력하면 된다.
DATETIME_객체.strftime("문자열")
# 예시) datetime.datetime.now().strftime("지금은 %Y년!")
# return 지금은 2024년!

# str -> datetime
# 문자열에 존재하지 않는 매핑 값이 매핑_문자열에 있으면 ValueError가 발생한다.
# 입력되지 않은 경우에 기본 값은 아래와 같다.
# 년: 1900, 월일: 1, 시분초: 0
DATETIME_객체 = datetime.datetime("문자열", "매핑_문자열")
# 예시) datetime.datetime.strptime("오늘은 2024년인데, 1일이고 3월 달 같네", "오늘은 %Y년인데, %d일이고 %m월 달 같네")
# return datetime.datetime(2024, 3, 1, 0, 0)

## PS
# datetime -> str 시, 빈문자열을 넣으면 빈문자열이 반환된다.
# str -> datetime 시, 문자열이 이상해도 매핑_문자열에 문자열의 datetime 값을 잘 매핑만 하면 된다.​

 

4. datetime combine

from datetime import datetime
datetime.combine(DATE_객체, TIME_객체)

# 혼동 주의
import datetime
datetime.datetime.combine(DATE_객체, TIME_객체)

 

5. 오늘은 1년 중 몇 주차

# return <class 'str'>
# 2자리 값 형태이며 1~9 값은 01, 02, ...
DATETIME_객체.strftime("%U")
DATE_객체.strftime("%U")​

 

6. .today() 내장함수

오늘 = datetime.datetime.today() # return datetime
오늘 = DATETIME_객체.today() # return datetime
오늘 = DATE_객체.today() # return date

# return 0 ~ 6
# 월요일: 0, ... 일요일: 6
무슨요일 = 오늘.weekday()​

 

7. datetime.timedelta() 연산

# 인자에는 weeks, days, hours, minutes, seconds
NEW = DATETIME_객체 +- datetime.timedelta(arg=숫자)

# 번외) 이번주 월요일
# 오늘이 목요일이라면 .weekday() 값은 3
# 오늘에서 3일 전으로 돌아가면 월요일
오늘 = datetime.datetime.today()
이번주_월요일 = 오늘 - datetime.timedelta(days=오늘.weekday())

## PS
# years, months 연산은 불가.
# 더하는 대상이 DATE 객체라면 시분초 연산을 해도 DATE 객체가 반환되니, 주의.

 

8. 오늘 기준, 이번 달 첫날 & 마지막 날

from datetime import datetitme, timedelta, time
from dateutil.relativedelta import relativedelta

오늘 = datetime.now()

이달_첫날 = datetime.combine(today.replace(day=1), time.min) # 이달 1일 00시 00분 00초

이달_막날 = 이달_첫날 + relativedelta(months=1) - timedelta(days=1) # 이달 막날 00시 00분 00초

최종 = datetime.combine(이달_막날.date(), time.max) # 이달 막날 23시 59분 59초 99999

 

9. 오늘 기준, 지난달 첫날 & 마지막 날

from datetitme import datetime, timedelta, time
from dateutil.relativedelta import relativedelta

오늘 = datetime.now()

이달_첫날 = datetime.combine(오늘.replace(day=1), time.min) # 이달 1일 00시 00분 00초

지난달_첫날 = 이달_첫날 - relativedelta(months=1) # 지난달 1일 00시00분00초

지난달_막날 = 지난달_첫날 + relativedelta(months=1) - timedelta(days=1) # 지난달 막날 00시 00분 00초

최종 = datetime.combine(지난달_막날.date(), time.max) # 지난달 막날 23시 59분 59초 99999

 

 

 

 

'Python tips' 카테고리의 다른 글

Pydantic을 활용한 JSON, dict 다루기  (0) 2024.04.01
python-dotenv, pydantic_settings를 통한 환경 변수 관리  (0) 2024.03.28
f-string  (0) 2024.03.28
파일 읽기와 쓰기  (0) 2024.03.25
파이썬 날짜 연산 (datetime X)  (0) 2024.02.15