language/Python

[Package/Library] 날짜 Library - datetime/time/calendar

브라우니란 2023. 11. 17. 18:01

 

1. datetime

 

1. date vs datetime 

  • date: date
  • datetime: timestamp 
import datetime

print(datetime.date.today()) # date, 2023-11-16
print(datetime.datetime.now()) # timestamp, 2023-11-16 14:46:07.175668

 

 

 

2. date.today() 

  • today() 메소드를 통해 year/month/day 를 추출 할 수 있다.
import datetime

x = datetime.date.today()
print(x.year) 
print(x.month)
print(x.day)

 

 

 

3. datetime.now()

  • now() 메소드를 통해 date.today() 보다 조금 더 많은 날짜 정보를 추출 할 수 있다.
import datetime

y = datetime.datetime.now()

print(y.year)
print(y.month)
print(y.day)
print(y.hour)
print(y.minute)
print(y.second)
print(y.microsecond)
print(y.date())
print(y.time())
print(y.weekday())

 

 

4. date str 변환

  • strftime: 날짜를 문자로 추출하는 함수
  • strptime: 문자 날짜를 날짜로 변환하는 함수
# strftime: 날짜를 문자로 추출하는 함수
# date > char

import datetime

d = datetime.datetime.now() 
d.strftime("%x") # 현재날짜 월/일/년
d.strftime("%X") # 현재 시:분:초
d.strftime("%Y") # 현재년도 4자리
d.strftime("%y") # 현재년도 2자리
d.strftime("%m") # 현재달
d.strftime("%d") # 현재일
d.strftime("%B") # 현재 영문자 달
d.strftime("%b") # 현재 영문자 달 약어
d.strftime("%H") # 현재 시 24시간
d.strftime("%I") # 현재 시 12시간
d.strftime("%p") # AM PM
d.strftime("%M") # 현재 분
d.strftime("%S") # 현재 초
d.strftime("%A") # 현재 요일(영문자)
d.strftime("%a") # 현재 요일(영문자, 약어)
d.strftime("%c") # Thu Nov 16 15:02:10 2023
d.strftime("%w") # 현재 숫자 요일 0:일 ~ 6:토
d.strftime("%j") # 누적날짜 
d.strftime("%U") # 누적주(일요일 시작)
d.strftime("%W") # 누적주(월요일 시작)

 

# strptime: 문자 날짜를 날짜로 변환하는 함수
# char > date 

datetime.datetime.strptime("2023-10-05 09:30:30","%Y-%m-%d %H:%M:%S")

a= datetime.datetime(2023, 10, 5, 9, 30, 30)
print(a)

# 문자 날짜 
d = datetime.date(2023,10,5) # 2023-10-05
t = datetime.time(9,30,30) # 09:30:30

# 문자 날짜 > 날짜
datetime.datetime.combine(d,t).strftime("%w")

 

 

5. 날짜 연산

  • timedelta()
# 1. 날짜 - 날짜 = 일수
datetime.date(2023,11,16) - datetime.date(2023,10,5)
(datetime.date(2023,11,16) - datetime.date(2023,10,5)).days


# 2. 날짜 - 일수 = 날짜
datetime.date(2023,11,16) - datetime.timedelta(days = 100)
datetime.date(2023,11,16) + datetime.timedelta(days = -100)


# 3. 날짜 + 일수 = 날짜
datetime.date(2023,11,16) + datetime.timedelta(days = 100)


# 4. 날짜 시간 + 시간 = 날짜 시간
datetime.datetime(2023,11,16,15,30,30) + datetime.timedelta(hours = 3)


# 5. 날짜 시간 + 분 = 날짜 시간 
datetime.datetime(2023,11,16,15,30,30) + datetime.timedelta(minutes = 30)


# 6. 날짜 시간 + 초 = 날짜 시간 
datetime.datetime(2023,11,16,15,30,30) + datetime.timedelta(seconds = 300)


# 7. 날짜 시간 + 시간, 분, 초 = 날짜 시간 
datetime.datetime(2023,11,16,15,30,30) + datetime.timedelta(hours = 3, minutes = 120, seconds = 300)


# 8. 날짜 시간 + 주 = 날짜 시간
datetime.datetime(2023,11,16,15,30,30) + datetime.timedelta(weeks = 5)

 

 

 


 

2. time

  • UTC 기준 시간
  • 1970년 1월 1일 0시 0분 0초를 기준으로 지난 시간을 초단위로 리턴해주는 기능

 

1. time과 localtime

  • time.time() 은 보통 프로그램의 시작과 종료 때 시간을 확인하여 프로그램의 총 실행시간을 구하는데 사용한다.
import time

time.time()

time.localtime()
time.localtime().tm_year
time.localtime().tm_mon
time.localtime().tm_mday
time.localtime().tm_hour
time.localtime().tm_min
time.localtime().tm_sec
time.localtime().tm_wday # 요일 0 월 ~ 6 일
time.localtime().tm_yday # 누적일
time.localtime().tm_isdst # 서머타임 경우 1, 아닐 경우 0, 몰라 -1

 

 

 

2. sleep()

  • 지정된 초단위 시간만큼 대기한다.
import time

start_time = time.time()

for i in range(10):
    print(i)
    time.sleep(2) # 대기시간

end_time = time.time()

print("time elapsed : ",end_time- start_time)

 

 

 

3. time ↔ str 변환

  • strftime: time → str
  • strptime: str → time
import time

# time > char
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())

 

import time

# char > time
time.strptime('2023-11-16 16:00:00', '%Y-%m-%d %H:%M:%S')
print(time.strptime('2023-11-16 16:00:00', '%Y-%m-%d %H:%M:%S'))

 

 

 

 


 

 

3. Calendar

import calendar 

calendar.calendar(2024)
calendar.prcal(2024)
calendar.prmonth(2024,3)
calendar.prmonth(2024,5)


calendar.weekday(2023,11,16) # 요일 0 월 ~ 6 일
calendar.prmonth(2023,11)
calendar.monthrange(2023,11) # 시작 요일, 끝 일


calendar.prmonth(2023,12)
calendar.monthrange(2023,12)
calendar.monthrange(2023,12)[0] # 시작요일
calendar.monthrange(2023,12)[1] # 마지막일