[파이썬] Python 날짜 및 시간 표기법, 날짜 시간 계산 방법 총정리 : timedelta(), datetime()
datetime모듈을 import하여 날짜와 시간에 대한 계산 및 표기법을 변경할 수 있습니다.
datetime의 date클래스는 날짜를 출력할때 사용합니다. datetime의 time클래스는 시간을 출력할때 사용합니다.
datetime의 datetime은 날짜와 시간을 출력할때 사용합니다.
float형의 timestamp값을 datetime의 자료형으로 변경하기 위해서는 fromtimestamp()함수를 사용합니다.
날짜계산과 시간계산을 위해서는 timedelta()클래스를 사용합니다. 그럼 예제 코드를 통하여 알아보아요.
파이썬 현재 날짜와 시간을 출력하기
datetime.now()함수를 사용합니다.
import datetime print(datetime.datetime.__doc__) current = datetime.datetime.now() print(current) #실행결과 C:\Users\ilike\AppData\Local\Programs\Python\Python39\python.exe C:/python/Workspace/main.py datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) The year, month and day arguments are required. tzinfo may be None, or an instance of a tzinfo subclass. The remaining arguments may be ints. 2020-12-08 21:05:43.429235
1.시간 뒤에 마이크로세컨드(microsecond) 값을 제외하고 싶은 경우에는 now.replace()함수를 사용합니다.
import datetime current = datetime.datetime.now() print(current) current_time = current.replace(microsecond=0) print(current_time) #실행결과 2020-12-08 21:36:07.151710 2020-12-08 21:36:07
2.timestamp()함수를 사용하여 float타입의 값을 받아 날짜와 시간으로 출력하는 방법 : fromtimestamp()함수를 사용합니다.
import datetime timestamp = datetime.datetime.now().timestamp() print(timestamp) fts = datetime.datetime.fromtimestamp(timestamp) print(fts) #실행결과 1607490746.188708 2020-12-08 21:12:26.188708
3.현재날짜만 yyyy-mm-dd 타입으로 출력하는 방법 및 현재시간만 출력하는 방법
import datetime currentdate = datetime.datetime.now().date() print(currentdate) currenttime = datetime.datetime.now().time() print(currenttime) #실행결과 2020-12-08 21:11:24.095884 chg = datetime.datetime.strftime(current_datetime, '%b %d %y %H %H %S') print(chg) #실행결과 Dec 08 20 22 22 57
4.날짜와 시간을 합치는 방법 : datetime.combine()함수를 사용합니다.
import datetime currentdate = datetime.datetime.now().date() print(currentdate) currenttime = datetime.datetime.now().time() print(currenttime) combine_datetime = datetime.datetime.combine(currentdate, currenttime) print(combine_datetime) #실행결과 2020-12-08 21:15:42.071281 2020-12-08 21:15:42.071281
5.yyyy-MM-dd HH:mm:ss 타입으로 출력하는 방법
import datetime current_datetime = datetime.datetime.now() print(current_datetime) dateformat = "%Y-%m-%d %H:%M:%S" tmp = current_datetime.strftime(dateformat) print(tmp) #실행결과 2020-12-08 21:23:51.487159 2020-12-08 21:23:51
파이썬 문자열(str)을 datetime으로 변경하는 방법
strptime()함수를 사용하여 datetime형으로 변경합니다.
반대로 datetime형을 문자열로 변경할때는 strftime()함수를 사용합니다.
import datetime current_datetime = datetime.datetime.now() print(current_datetime) dateformat = "%Y-%m-%d %H:%M:%S" tmp = current_datetime.strftime(dateformat) print(tmp) print(type(tmp)) print('-'*40) datetime_convert = datetime.datetime.strptime(tmp, dateformat) print(datetime_convert) print(type(datetime_convert)) print('-'*40) str_datetime = "2020-12-08 21:29:07" datetime_convert2 = datetime.datetime.strptime(str_datetime, dateformat) print(datetime_convert2) print(type(datetime_convert2)) #실행결과 2020-12-08 21:30:54.253993 2020-12-08 21:30:54 <class 'str'> ---------------------------------------- 2020-12-08 21:30:54 <class 'datetime.datetime'> ---------------------------------------- 2020-12-08 21:29:07 <class 'datetime.datetime'>
파이썬 오늘을 기준으로 이전날짜와 다음날짜 가져오는 방법
timedelta()함수를 사용하여 날짜 계산 기준을 정합니다.
import datetime current_time = datetime.datetime.now() print("today -> ",current_time) base_day = datetime.timedelta(days=1) print(base_day) previous_day = current_time - base_day print("이전날짜 -> ", previous_day) next_day = current_time + base_day print("다음날짜 -> ", next_day) #실행결과 today -> 2020-12-08 21:45:14.184384 1 day, 0:00:00 이전날짜 -> 2020-12-07 21:45:14.184384 다음날짜 -> 2020-12-09 21:45:14.184384
파이썬 특정 날짜로 부터 시간 계산방법
import datetime current_time = datetime.datetime.now() print("today -> ", current_time) print("오늘 현재시간 기준으로 3일 뒤 날짜 -> ", (current_time + datetime.timedelta(days=3))) print("오늘 현재시간 기준으로 3일 전 날짜 -> ", (current_time + datetime.timedelta(days=-3))) print("오늘 현재시간 기준으로 1일 뒤 3시간 이후 날짜 -> ", (current_time + datetime.timedelta(days=1, hours=3))) #실행결과 today -> 2020-12-08 22:04:37.808202 오늘 현재시간 기준으로 3일 뒤 날짜 -> 2020-12-11 22:04:37.808202 오늘 현재시간 기준으로 3일 전 날짜 -> 2020-12-05 22:04:37.808202 오늘 현재시간 기준으로 1일 뒤 3시간 이후 날짜 -> 2020-12-10 01:04:37.808202
파이썬 날짜의 차이 계산하는 방법
일 단위(days), 초 단위(seconds), 분 단위, 시간 단위로 계산할 수 있습니다.
import datetime dateformat = "%Y-%m-%d %H:%M:%S" start_datetime = "2020-12-06 21:29:07" end_datetime = "2020-12-08 21:19:02" print("문자열을 datetime 자료형으로 형변환") datetime_convert1 = datetime.datetime.strptime(start_datetime, dateformat) datetime_convert2 = datetime.datetime.strptime(end_datetime, dateformat) print("일 단위 -> ", (datetime_convert2 - datetime_convert1).days) print("시간 단위 -> ", (datetime_convert2 - datetime_convert1).seconds / 3600) print("분 단위 -> ", (datetime_convert2 - datetime_convert1).seconds / 60) print("초단위 -> ", (datetime_convert2 - datetime_convert1).seconds) #실행결과 문자열을 datetime 자료형으로 형변환 일 단위 -> 1 시간 단위 -> 23.831944444444446 분 단위 -> 1429.9166666666667 초단위 -> 85795
파이썬 년,월,일,시,분,초,마이크로초를 날짜로 출력하는 방법
import datetime time_linked = datetime.datetime(2020, 1, 1, 1, 1, 1, 100) print(time_linked) #실행결과 2020-01-01 01:01:01.000100
파이썬 현재 년월일, 현재 일자와 시간, 날짜, 시간 표기법
import datetime # 현재 년월일 print("타입 : ", type(datetime.date.today()), "현재 년월일 : ", datetime.date.today()) # 현재 일자와 시간 print("타입 : ", type(datetime.datetime.now()), "현재 일자와 시간 : ", datetime.datetime.now()) # 날짜 타입 할당 print("타입 : ", type(datetime.date(2020, 12, 25)), "날짜 타입 : ", datetime.date(2020, 12, 25)) # 시간 타입 할당 NewTime = datetime.time(12, 30, 40) print("타입 : ", type(datetime.time(7, 20, 5)), "날짜 타입 : ", (datetime.time(7, 20, 5))) #실행결과 타입 : <class 'datetime.date'> 현재 년월일 : 2020-12-08 타입 : <class 'datetime.datetime'> 현재 일자와 시간 : 2020-12-08 22:29:08.044205 타입 : <class 'datetime.date'> 날짜 타입 : 2020-12-25 타입 : <class 'datetime.time'> 날짜 타입 : 07:20:05
파이썬 날짜를 한글로 표기하는 방법
import datetime current_datetime = datetime.datetime.now() print(current_datetime) chg = datetime.datetime.strftime(current_datetime, "%Y년 %m월 %d일") print(chg) chg2 = datetime.datetime.strftime(current_datetime, "%Y년 %m월 %d일 %a") print(chg2) chg2 = datetime.datetime.strftime(current_datetime, "%Y년 %m월 %d일 %A") print(chg2) #실행결과 2020-12-08 22:47:17.687803 2020년 12월 08일 2020년 12월 08일 Tue 2020년 12월 08일 Tuesday