Python 날짜 계산 방법 (오늘, 마이크로초 전, 밀리초 전, 몇초 전, 어제, 일주일 전, 한달 전, 일년 전, 마이크로초 후, 밀리초 후, 몇초 후, 내일, 일주일 후, 한달 후, 일년 후, 날짜 더하기, 날짜 빼기, 두 날짜 차이, 시간 더하기, 시간 빼기)
Python에서 날짜와 시간 계산하는 방법을 알려드리도록 하겠습니다.
먼저 지금 날짜와 시간을 구하는 방법입니다.
from datetime import datetime
now = datetime.now()
print("현재 :" , now)
# 출력
# 현재 : 2021-01-09 19:25:02.942687
Python에서 원하는 시간 전, 혹은 원하는 시간 후 를 구하는 방법은 두가지 방법이 있습니다.
방법은 비슷한데 사용하는 라이브러리가 다르고 그에 따라 계산할 수 있는 것이 다르다고 말씀드리는게 더 맞을 것 같습니다.
그럼 하나씩 보여드리면서 차이를 말씀드리겠습니다.
datetime.timedelta 를 사용하는 방법.
마이크로초, 밀리초, 초, 분, 시간, 일, 주를 원하는 만큼 더하고 빼는 방법입니다.
from datetime import datetime, timedelta
now = datetime.now()
print("현재 :" , now) # 현재 : 2021-01-09 19:41:03.645702
before_one_microsecond = now - timedelta(microseconds=1)
print("1마이크로초 전 :", before_one_microsecond) # 1마이크로초 전 : 2021-01-09 19:41:03.645701
after_one_microsecond = now + timedelta(microseconds=1)
print("1마이크로초 후 :", after_one_microsecond) # 1마이크로초 후 : 2021-01-09 19:41:03.645703
before_one_millisecond = now - timedelta(milliseconds=1)
print("1밀리초 전 :", before_one_millisecond) # 1밀리초 전 : 2021-01-09 19:41:03.644702
after_one_millisecond = now + timedelta(milliseconds=1)
print("1밀리초 후 :", after_one_millisecond) # 1밀리초 후 : 2021-01-09 19:41:03.646702
before_one_second = now - timedelta(seconds=1)
print("1초 전 :", before_one_second) # 1초 전 : 2021-01-09 19:41:02.645702
after_one_second = now + timedelta(seconds=1)
print("1초 후 :", after_one_second) # 1초 후 : 2021-01-09 19:41:04.645702
before_one_minute = now - timedelta(minutes=1)
print("1분 전 :", before_one_minute) # 1분 전 : 2021-01-09 19:40:03.645702
after_one_minute = now + timedelta(minutes=1)
print("1분 후 :", after_one_minute) # 1분 후 : 2021-01-09 19:42:03.645702
before_one_hour = now - timedelta(hours=1)
print("1시간 전 :", before_one_hour) # 1시간 전 : 2021-01-09 18:41:03.645702
after_one_hour = now + timedelta(hours=1)
print("1시간 후 :", after_one_hour) # 1시간 후 : 2021-01-09 20:41:03.645702
before_one_day = now - timedelta(days=1)
print("1일 전 :", before_one_day) # 1일 전 : 2021-01-08 19:41:03.645702
after_one_day = now + timedelta(days=1)
print("1일 후 :", after_one_day) # 1일 후 : 2021-01-10 19:41:03.645702
before_one_week = now - timedelta(weeks=1)
print("1주 후 :", before_one_week) # 1주 후 : 2021-01-02 19:41:03.645702
after_one_week = now + timedelta(weeks=1)
print("1주 후 :", after_one_week) # 1주 후 : 2021-01-16 19:41:03.645702
datetime에 timedelta 를 사용하여 계산하는 방법입니다.
timedelta에 microseconds, milliseconds, seconds, minutes, hours, days, weeks Parameter에 값을 원하는 수로 입력하고,
기준이 되는 날짜에 더하거나 빼주면 계산된 날짜와 시간을 아주 쉽게 구할 수 있습니다.
마이크로초, 밀리초, 초, 분, 시간, 일, 주 를 더하고 빼고싶을 때는 위와 같이 datetime에 timedelta를 사용하시면 됩니다.
from datetime import datetime, timedelta
now = datetime.now()
print("현재 :" , now)
after_1_week_3_days_2_hours = now + timedelta(weeks=1, days=3, hours=2)
print("1주 하고 3일하고 2시간 후 :", after_1_week_3_days_2_hours)
# 출력
# 현재 : 2021-01-09 19:52:20.922781
# 1주 하고 3일하고 2시간 후 : 2021-01-19 21:52:20.922781
물론 위와같이 하나뿐만이 아니라 주, 일, 시간 등 여러개를 넣어서 계산하는 것도 가능합니다.
dateutil.relativedelta.relativedelta 를 사용하는 방법.
마이크로초, 초, 분, 시간, 일, 주, 월, 년을 원하는 만큼 더하고 빼는 방법입니다.
from datetime import datetime
from dateutil.relativedelta import relativedelta
now = datetime.now()
print("현재 :" , now) # 현재 : 2021-01-09 20:07:09.682594
before_one_microsecond = now - relativedelta(microseconds=1)
print("1마이크로초 전 :", before_one_microsecond) # 1마이크로초 전 : 2021-01-09 20:07:09.682593
after_one_microsecond = now + relativedelta(microseconds=1)
print("1마이크로초 후 :", after_one_microsecond) # 1마이크로초 후 : 2021-01-09 20:07:09.682595
before_one_second = now - relativedelta(seconds=1)
print("1초 전 :", before_one_second) # 1초 전 : 2021-01-09 20:07:08.682594
after_one_second = now + relativedelta(seconds=1)
print("1초 후 :", after_one_second) # 1초 후 : 2021-01-09 20:07:10.682594
before_one_minute = now - relativedelta(minutes=1)
print("1분 전 :", before_one_minute) # 1분 전 : 2021-01-09 20:06:09.682594
after_one_minute = now + relativedelta(minutes=1)
print("1분 후 :", after_one_minute) # 1분 후 : 2021-01-09 20:08:09.682594
before_one_hour = now - relativedelta(hours=1)
print("1시간 전 :", before_one_hour) # 1시간 전 : 2021-01-09 19:07:09.682594
after_one_hour = now + relativedelta(hours=1)
print("1시간 후 :", after_one_hour) # 1시간 후 : 2021-01-09 21:07:09.682594
before_one_day = now - relativedelta(days=1)
print("1일 전 :", before_one_day) # 1일 전 : 2021-01-08 20:07:09.682594
after_one_day = now + relativedelta(days=1)
print("1일 후 :", after_one_day) # 1일 후 : 2021-01-10 20:07:09.682594
before_one_week = now - relativedelta(weeks=1)
print("1주 전 :", before_one_week) # 1주 후 : 2021-01-02 20:07:09.682594
after_one_week = now + relativedelta(weeks=1)
print("1주 후 :", after_one_week) # 1주 후 : 2021-01-16 20:07:09.682594
before_one_month = now - relativedelta(months=1)
print("1달 전 :", before_one_month) # 1달 전 : 2020-12-09 20:07:09.682594
after_one_month = now + relativedelta(months=1)
print("1달 후 :", after_one_month) # 1달 후 : 2021-02-09 20:07:09.682594
before_one_year = now - relativedelta(years=1)
print("1년 전 :", before_one_year) # 1년 전 : 2020-01-09 20:07:09.682594
after_one_year = now + relativedelta(years=1)
print("1년 후 :", after_one_year) # 1년 후 : 2022-01-09 20:07:09.682594
dateutil.relativedelta.relativedelta 를 사용하여 계산하는 방법입니다.
보시면 아시겠지만 방식 자체만 보면 datetime.timedelta 를 사용한 것과 다를 것이 없어보이고, 구할 수 있는 것도 다르지 않아보이지만,
두 라이브러리는 아주 큰 차이가 있습니다.
timedelta 에는 Parameter에 months와 years가 존재하지 않습니다.
relativedelta 에는 milliseconds가 존재하지 않습니다.
즉, 마이크로초 전, 마이크로초 후 를 구하고 싶다면 timedelta를 사용하셔야 하고,
몇달 전, 몇달 후, 몇년 전, 몇년 후 를 구하고 싶다면 relativedelta를 사용하셔야 합니다.
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
now = datetime.now()
print("현재 :" , now) # 현재 : 2021-01-09 20:27:32.759917
after_1_week_3_days_2_hours = now + timedelta(weeks=1, days=3, hours=2)
print("1주 하고 3일하고 2시간 후 :", after_1_week_3_days_2_hours) # 1주 하고 3일하고 2시간 후 : 2021-01-19 22:27:32.759917
after_2_years_4_months_3_weeks = now + relativedelta(years=2, months=4, weeks=3)
print("2년 하고 4달하고 3주 후 :", after_2_years_4_months_3_weeks) # 2년 하고 4달하고 3주 후 : 2023-05-30 20:27:32.759917
두 라이브러리 모두 위와같이 하나뿐만이 아니라 연, 월, 주, 일, 시간 등 여러개를 넣어서 계산하는 것도 가능합니다.
관련 정보
도움이 되셨다면 공감, 댓글 부탁드립니다!
궁금하신 점이나 요청사항은 언제든지 말씀해주세요!
피드백도 언제나 환영입니다!
감사합니다.
'Developer > Python' 카테고리의 다른 글
Python print colored text with colorama- 파이썬 colorama 사용해 쉽게 출력 문자 색상, 배경 색상 변경 (0) | 2021.01.14 |
---|---|
Python 날짜 차이 계산, 날짜 비교 방법 (1) | 2021.01.09 |
Python urllib.parse - url parameter parsing, uri 다루기 (0) | 2021.01.09 |
Python list chunk - 리스트 분할(자르기, 나누기, split) 방법 (0) | 2021.01.08 |
Python 날짜 사이 모든 날짜 리스트로 구하기 (4) | 2021.01.08 |
댓글