파이썬에서 날짜와 시간을 다루는 방법을 알아보자.
지금 현재의 날짜와 시간을 문자열로 출력하려면 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 날짜, 시간 모듈 datetime] 정리된 글 잘 보고 가요. 정말 도움 많이 받았습니다.
좋아요좋아요
자세한 정리 감사드립니다
좋아요좋아요
좋은 정보 감사합니다.
질문 하나요.
Python에서는 특별히 분기를 구하는 함수를 지원하나요.
특별히 없는 것 같아요서요.
좋아요좋아요
도움이 되셨다니 감사합니다.
파이썬 기본 라이브러리에서는 제공하는 것 같지 않고 fiscalyear를 설치하시면 될 것 같습니다.
아래 링크에서 quarter 부분을 참고하시면 됩니다.
https://pypi.python.org/pypi/fiscalyear/0.1.0
math를 import해서 math.ceil(month/3.) 로 직접 구현하셔도 됩니다.
좋아요좋아요