2023년 6월 업데이트
안녕하세요. SQLER의 코난 김대우입니다.
이번 강좌에서는, Python 초급 강좌 목차 - 6. 날짜와 시간 데이터 처리를 진행토록 하겠습니다.
SQLER에서 진행되는 전체 Python / 머신러닝 강좌 목록
코드를 실행하기 위해서는, vscode에서 새로운 파일을 만들고 실행하시면 됩니다.
예를 들어, 06_datetime.py를 생성하고 코드를 실행합니다.
TL;DR
datetime 모듈은 날짜와 시간을 처리하기 위한 클래스를 제공합니다. now() 함수를 사용하여 현재 날짜와 시각을 가져올 수 있고, 날짜와 시간을 더하거나 빼는 것과 같은 작업을 timedelta를 사용하여 수행할 수 있습니다. 또한, Formatting 기능을 사용하면 특정 날짜 또는 시간 정보도 추출할 수 있습니다.
Python 초급 강좌 목차 - 6. 날짜와 시간 데이터 처리
Python의 datetime 모듈에는 날짜 및 시간을 처리하기 위한 여러 클래스들이 포함되어 있습니다.
우선 날짜와 시간에 대한 데이터형을 정리합니다.
date와 time 데이터형
date:
년, 월, 일을 포함time:
시, 분, 초 포함datetime:
년, 월, 일, 시, 분, 초 포함timedelta
: 두 개의 날짜 또는 시간 사이의 기간(duration)
현재 날짜와 시간 처리
코드상에서 로깅을 하거나, 데이터를 저장할 때 빈번하게 현재날짜와 시각을 가져와야 합니다.
이때 now() 함수를 이용해 정보를 가져올 수 있습니다.
# 현재 날짜와 시간을 얻으려면 datetime 라이브러리를 사용해야 합니다. from datetime import datetime current_date = datetime.now() # now 함수는 현재 날짜와 시간을 datetime 객체로 반환합니다. # datetime 객체를 다른 문자열에 연결하기 전에 문자열로 변환해야 합니다. print('Today is: ' + str(current_date))
☑️ 챗GPT 활용: utc 날짜 데이터에 대해서 알려줘
날짜나 시간 연산
날짜나 시간 데이터에 대해 여러 날짜를 더하거나 시간을 빼는 등의 연산을 해야 할 경우가 있습니다.
이때 timedelta를 이용하여 편하게 이러한 날짜/시간 데이터 처리가 가능합니다.
# 현재 날짜와 시간을 얻으려면 datetime 라이브러리를 사용해야 합니다. from datetime import datetime, timedelta # now 함수는 현재 날짜와 시간을 리턴합니다. today = datetime.now() print('Today is: ' + str(today)) # timedelta를 사용하여 날짜에 일 또는 주를 더하거나 뺄 수 있습니다. one_day = timedelta(days=1) yesterday = today - one_day print('Yesterday was: ' + str(yesterday)) one_week = timedelta(weeks=1) last_week = today - one_week print('Last week was: ' + str(last_week))
날짜나 시간 포맷(formatting) 함수
특정한 날짜나 시간 함수를 이용해 formatting이 가능합니다. 날짜의 해당 월이나 일 정보만 추출해 이를 문자열이나 다른 데이터로 처리 가능합니다.
# 현재 날짜와 시간을 얻으려면 datetime 라이브러리를 사용해야 합니다. from datetime import datetime # now 함수는 현재 날짜와 시간을 리턴합니다. today = datetime.now() # 일, 월, 년, 시, 분, 초 function 사용해 날짜의 일부만 표시할 수 있습니다. # 이 모든 함수는 정수(integer) 값을 반환합니다. # 다른 문자열에 연결(concat) 하기 전에 문자열로 변환해야 합니다. print('Day: ' + str(today.day)) print('Month: ' + str(today.month)) print('Year: ' + str(today.year)) print('Hour: ' + str(today.hour)) print('Minute: ' + str(today.minute)) print('Second: ' + str(today.second))
문자열로 날짜/시간 데이터를 받을 경우 변환
가끔, 문자열로 날짜나 시간 데이터를 받을 경우가 있습니다. 이때 strptime() 함수로 문자열 데이터를 날짜/시간 데이터형으로 변환할 수 있습니다.
# datetime, timedelta 모듈을 import 합니다. from datetime import datetime, timedelta # 사용자에게 날짜를 입력받을 때 날짜 형식을 알려주면 좋습니다. birthday = input('When is your birthday (dd/mm/yyyy)? ') # 날짜가 포함된 문자열을 날짜 객체로 변환할 때 변환할 날짜 형식을 지정해야 합니다. # 날짜가 지정된 형식이 아니면 Python은 예외를 발생시킵니다 birthday_date = datetime.strptime(birthday, '%d/%m/%Y') print ('Birthday: ' + str(birthday_date)) # 문자열을 날짜 객체로 변환했기 때문에 timedelta와 같은 날짜 및 시간 함수를 사용할 수 있습니다. one_day = timedelta(days=1) birthday_eve = birthday_date - one_day print('Day before birthday: ' + str(birthday_eve))
☑️ 챗GPT 활용: python의 datetime.strptime에 대해 알려줘
연습문제
아래의 comment를 살펴보고, 이를 코드로 구현하세요. 해결방안은 c9-python-getting-started/code_challenge_solution.py at master · CloudBreadPaPa/c9-python-getting-started (github.com)에서 보실 수 있습니다.
# 오늘의 날짜 출력 # 어제의 날짜 출력 # 사용자에게 날짜 입력 요청 # 입력받은 날짜로부터 1주 후 날짜 출력
수고하셨습니다. 다음 강좌에서 뵐게요.
참조링크
개발자 커뮤니티 SQLER.com - Python 무료 강좌 - 기초, 중급, 머신러닝(2021년 1월 업데이트)
파이썬 강좌 책 구매
강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다.
책구매 링크: 챗GPT와 함께하는 파이썬 & 머신러닝 코딩 마스터