본문 바로가기

프로그래밍/python

파이썬 datetime 모듈로 날짜 관련형식 정복하기

반응형
본 포스트는 www.dataquest.io/blog/python-datetime-tutorial/ 의 글을 참조로 다시 재정리하였습니다.

 

공공 데이터를 참조하기 위해서는 날짜 과련 모듈을 알고 있어야합니다.

따라서 이번엔 datetime에 관하여 알아보도록 하겠습니다.

 

파이썬 datetime class들

먼저 예제 코드를 살펴보기 전에 5개의 중요한 클래스를 살펴보겠습니다.

 

datetime - 시간과 날짜를 동시에 구성할 수 있습니다.(month, day, year, hour, second, microsecond)

date - 시간과는 별개로 날짜를 구성할 수 있습니다.(month, day, year)

time - 날짜와는 별개로 시간을 구설할 수 있습니다.(hour, minute, second, microsecond)

timedelta - 시간의 기간을 측정하기 위해 사용합니다.

tzinfo - 타임존을 위한 abstract class 입니다.

 

Date object 만들기

datetime은 이 모듈안에 네임이자 클래스도 존재하기에 datetime 클래스를 datetime 모듈에서 불러보겠습니다. 그런다음 현재의 시간 오브젝트를 만들어서 살펴보겠습니다. datetime의 .now() 함수를 이용하면 현재의 시간을 알 수 있습니다.

# import datetime class from datetime module
from datetime import datetime

# get current date
datetime_object = datetime.now()
print(datetime_object)
print('Type :- ',type(datetime_object))

여기서 확인할 수 있는것은 datetime_object 는 datetime 클래스의 datetime 오브젝트라는 것입니다.

즉 이것은 year, month, day, hour, minute, second, microsecond 등이 포함돼 있습니다.

 

strptime() strftime()

사실 대부분의 존재하는 dataset 에서는 date와 time등이 string 형으로 저장된다는 것이죠. 

datetime을 이용해서 이러한 string 데이터들을 이용하는 법을 배워보겠습니다.

고맙게도 datetime에서는 두가지의 메소드가 존재합니다. strptime()과 strftime() 입니다. strptime은 date값을 읽은 후 datetime 오브젝트로 변환시킬 수 있습니다. strftime()은 datetime오브젝트를 string형으로 컨버팅할 수 있습니다.

 

my_string = '2019-10-31'

# Create date object in given time format yyyy-mm-dd
my_date = datetime.strptime(my_string, "%Y-%m-%d")

print(my_date)
print('Type: ',type(my_date))

strptime()은 두가지의 인자값이 들어갑니다.  즉 my_string 을 미리 존재하는 character 패턴으로 값을 추출하는 것입니다. 여기서 %Y는 년도를 나타냅니다.

 

또한가지 마지막에 00:00:00 의 time값이 들어가 있습니다. 이것은 datetime 이기에 time값이 들어가 있는 것입니다.

00:00:00 은 time의 기본값입니다.

 

다시 돌아가서 이제 month와 year을 따로따로 추출하고싶을 때 다음과 같이 하면됩니다.

 

print('Month: ', my_date.month) # To Get month from date
print('Year: ', my_date.year) # To Get month from year

 

datetime 오브젝트에서 요일정보와 날짜 알아내기

.weekday() 함수를 이용해서 한 주당 숫자 그리고 이것을 calendar 모듈을 이용해 텍스트형으로(Monday, Tuesday, Wendesday...) 바꿔보겠습니다.

# import calendar module
import calendar
print('Day of Month:', my_date.day)

# to get name of day(in number) from date
print('Day of Week (number): ', my_date.weekday())

# to get name of day from date
print('Day of Week (name): ', calendar.day_name[my_date.weekday()])

여기서 week number는 다음과 같습니다.

 

datetime 오브젝트에서 시간과 분 데이터 가져오기

여기서는 .hour와 .minute 를 이용합니다. 그리고 .now() 함수를 이용해 현재의 시간정보를 가져오겠습니다.

from datetime import datetime todays_date = datetime.now()

# to get hour from datetime
print('Hour: ', todays_date.hour)

# to get minute from datetime
print('Minute: ', todays_date.minute)

 

datetime 오브젝트에서 년중 몇번째 주인지 가져오기

.isocalendar() 를 이용해 year, week of the year, day of the week 을 계산할 수 있습니다.

특별하게도 이 함수는 ISO calendar 의 튜플형식을 리턴합니다.

# Return a 3-tuple, (ISO year, ISO week number, ISO weekday).
todays_date.isocalendar()

이 결과값으로 현재는 52번째주인걸 알 수가 있습니다.

또한 여기서 중요한 점은 ISO calendar의 주당 숫자는 1부터 시작이므로 5는 Friday입니다.  

 

 

두개의 datetime 비교하기

다음과 같이 비교연산자로 간단하게 비교할 수 있습니다.

 

반응형