본문 바로가기
Data & Programming/Python

[Python] 파이썬으로 날짜와 시간 다루기

by 눈부셔™ 2023. 9. 23.
728x90

[Python] 파이썬으로 날짜와 시간 다루기

날짜와 시간은 시계열 데이터 분석 및 애플리케이션 개발에서 핵심적인 역할을 합니다.

이 글에서는 파이썬을 사용해서 날짜와 시간을 처리하고 다양한 형식으로 출력하는 방법에 대해 작성해보려 합니다.

파이썬 날짜와 시간 다루기

 

달력 출력하기

Python에서 calendar 모듈을 사용하여 달력을 출력할 수 있습니다.

calendar 모듈은 파이썬에서 날짜 및 시간 관련 작업을 수행할 때 유용하게 활용됩니다.

  • 년도의 전체 달력 출력
1
2
3
#년도의 전체달력 출력
from calendar import calendar
print(calendar(2023)) 

파이썬 2023년 전체 달력 출력

 

  • 특정월의 달력 출력
1
2
3
# 캘린더 calendar
from calendar import month
print(month(20239)) 

 

  • 특정월의 첫 요일과 일수 구하기
1
2
3
4
5
6
#특정 달의 첫 요일과 일수 구하기
import calendar
year = 2023
month = 9
first_day, num_days = calendar.monthrange(year, month)
print(f"{year}년 {month}월의 첫 요일: {first_day}, 총 일수: {num_days}")  # 2023년 9월의 첫 요일: 4, 총 일수: 30

 

  • 요일의 이름 출력

숫자로 표현된 요일을 실제 요일의 이름으로 얻으려면 다음과 같이 합니다.

1
2
3
4
5
#요일의 이름 출력
import calendar
day = 0  # 0부터 6까지 (월요일부터 일요일까지)
day_name = calendar.day_name[day]
print(day_name)  # Monday 출력

 

  • 요일의 약어 출력
1
2
3
4
#요일의 약어 출력
day = 2  # 0부터 6까지 (월요일부터 일요일까지)
day_abbr = calendar.day_abbr[day]
print(day_abbr)  # Wed 출력

 

datetime 객체 활용

대부분의 금융데이터는 시계열 데이터로 구성되어 있습니다.

datetime은 날짜와 시간을 다루는데 파이썬에서 많이 사용하는 모듈 중의 하나 입니다.

 

  • 현재시간 읽어오기
1
2
3
4
from datetime import datetime
# 현재시간
dt = datetime.today() # datetime.now()와 동일
dt

datetime.today()

1
2
dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond
#(2023, 9, 22, 17, 4, 36, 636955)

 

  • 날짜와 시간을 지정하여 객체 만들기
1
2
3
4
5
6
7
from datetime import datetime
dt = datetime(2023101
print(dt) #2023-10-01 00:00:00
dt = datetime(2023101125010
print(dt) #2023-10-01 12:50:10
dt = datetime(year=2024, month=3, day=1)   
print(dt) #2024-03-01 00:00:00

 

  • 요일 구하기
1
2
#weekday() : 요일을 숫자로 변환하는 함수
dt.weekday() # 0:월, 1:화, 2:수, 3:목, 4:금, 5:토, 6:일

요일값이 0부터 시작하는 숫자로 반환되므로 이름을 얻고자하면 다음과 같이 문자열 리스트를 활용할 수 있습니다.

1
'월화수목금토일'[dt.weekday()]  #금 출력 

 

1
2
week_names = ['Mon''Tue''Wed''Thu''Fri''Sat''Sun']
week_names[dt.weekday()]  #Fri 출력

 

  • 날짜 시간 포멧팅
1
2
3
from datetime import datetime
dt = datetime.today()
dt.isoformat()  #2023-09-22T17:33:10.463115  출력

 

1
2
3
print ("%d-%02d-%02d" % (dt.year, dt.month, dt.day))  #2023-09-22
print ("%02d:%02d:%02d" % (dt.hour, dt.minute, dt.second))  #17:33:10
print ("%d년 %d월 %d일 %s요일" % (dt.year, dt.month, dt.day, '월화수목금토일'[dt.weekday()]))  #2023년 9월 22일 금요일

 

  • 날짜 시간을 문자열로, 문자열을 날짜 시간으로
datetime.strftime(): datetime → 문자열
datetime.strptime(): 문자열 → datetime
1
2
3
4
5
6
# 시간을 문자열로  strftime()
 
print( dt.strftime("%Y-%m-%d") )  #2023-09-22
print( dt.strftime("%H:%M:%S") )  #17:33:10
print( dt.strftime("%Y-%m-%d %H:%M:%S") )  #2023-09-22 17:33:10
print( dt.strftime("%Y년 %m월 %d일 %H시 %M분") )  #2023년 09월 22일 17시 33분

 

1
2
3
4
5
6
7
8
9
# 문자열을 시간으로 strptime()
 
= "2023-09-22 17:33:10"
dt = datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
print(dt)  #023-09-22 17:33:10
 
= "2023년 09월 22일 17시 33분"
dt = datetime.strptime(s, "%Y년 %m월 %d일 %H시 %M분")
print(dt)  #2023-09-22 17:33:00

 

  • 경과 시간, 이전/이후 시간 구하기
1
2
3
4
5
# 오늘 부터 100일 후 날짜
from datetime import datetime, timedelta
 
theday = datetime.now() + timedelta(days=100)
print(theday)  #2023-12-31 17:43:19.035668

 

1
2
3
4
# 현재 부터 48시간 이후
 
theday = datetime.now() + timedelta(hours=48)
print(theday)  #2023-09-24 17:44:43.106011

 

 

#파이썬  #프로그래밍  #코딩   #파이썬 날짜구하기  #파이썬 시간구하기  #datetime  #날짜와 시간  #날짜포멧

728x90