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 |