[python] 날짜, 시간관련 모듈

파이썬에서 날짜와 시간을 다루는 방법을 알아보자.

지금 현재의 날짜와 시간을 문자열로 출력하려면 strftime 메서드를 이용하면 된다.

import datetime

now = datetime.datetime.now()
print(now)          # 2015-04-19 12:11:32.669083

nowDate = now.strftime('%Y-%m-%d')
print(nowDate)      # 2015-04-19

nowTime = now.strftime('%H:%M:%S')
print(nowTime)      # 12:11:32

nowDatetime = now.strftime('%Y-%m-%d %H:%M:%S')
print(nowDatetime)  # 2015-04-19 12:11:32

날찌, 시간형식의 문자열을 datetime으로 만들려면 strptime을 이용하자.

import datetime

myDatetimeStr = '2015-04-15 12:23:38'
myDatetime = datetime.datetime.strptime(myDatetimeStr, '%Y-%m-%d %H:%M:%S')
print(type(myDatetime)) # [class 'datetime.datetime']
print(myDatetime)       # 2015-04-15 12:23:38

날짜나 시간을 변경하기 위해서는 replace 메서드를 사용하면 된다.

import datetime

myDatetime = datetime.datetime.strptime('2015-04-15 12:23:38', '%Y-%m-%d %H:%M:%S')
print(myDatetime)   # 2015-04-15 12:23:38

yourDatetime = myDatetime.replace(day=16)
print(myDatetime)   # 2015-04-15 12:23:38
print(yourDatetime) # 2015-04-16 12:23:38

날짜만을 관리하기 위해서는 datetime.date를, 시간만을 관리하기 위해서는 datetime.time을 이용하면 된다. datetime.date와 datetime.time을 합치기 위해서는 datetime.datetime.combine을 이용하자.

import datetime

d = datetime.date(2015, 4, 15)
t = datetime.time(12, 23, 38)

dt = datetime.datetime.combine(d, t)
print(dt) # 2015-04-15 12:23:38

datetime의 각 날짜와 시간에 관련된 항목값에 접근하려면 timetuple 메서드를 사용하면 된다.

import datetime

now = datetime.datetime.now()
nowTuple = now.timetuple()
print(nowTuple)         # time.struct_time(tm_year=2015, tm_mon=4, tm_mday=19, tm_hour=13, tm_min=21, tm_sec=40, tm_wday=6, tm_yday=109, tm_isdst=-1)
print(nowTuple.tm_year) # 2015

날짜, 시간 연산을 해보자. datetime에 하루(1day)를 더하고 싶다면 datetime.timedelta를 이용하자.

import datetime

now = datetime.datetime.now()
print(now)      # 2015-04-19 12:40:00.320686

tomorrow = now + datetime.timedelta(days=1)
print(tomorrow) # 2015-04-20 12:40:00.320686

timedelta에 들어갈 수 있는 인자값은 아래와 같다.
– 1주 : datetime.timedelta(weeks=1)
– 1일 : datetime.timedelta(days=1)
– 1시간 : datetime.timedelta(hours=1)
– 1분 : datetime.timedelta(minutes=1)
– 1초 : datetime.timedelta(seconds=1)
– 1밀리초 : datetime.timedelta(milliseconds=1)
– 1마이크로초 : datetime.timedelta(microseconds=1)

timedelta로 5시간 30분을 표현하면 datetime.timedelta(hours=5, minutes=30)이라고 하면 된다. 이것을 초(second) 단위로 변경하려면 total_seconds 메서드를 호출하면 초단위로 쉽게 변경할 수 있다.

datetime에서 datetime을 빼면 timedelta 값을 얻을 수 있다.

import datetime

oneDatetime = datetime.datetime.strptime('2015-04-15 00:00:00', '%Y-%m-%d %H:%M:%S')
twoDatetime = datetime.datetime.strptime('2015-04-16 00:00:10', '%Y-%m-%d %H:%M:%S')
result = twoDatetime - oneDatetime
print(result)         # 1 day, 0:00:10
print(result.days)    # 1
print(result.seconds) # 10

[python] 날짜, 시간관련 모듈”에 대한 답글 4개

  1. 좋은 정보 감사합니다.
    질문 하나요.
    Python에서는 특별히 분기를 구하는 함수를 지원하나요.
    특별히 없는 것 같아요서요.

    좋아요

댓글 남기기

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.