[파이썬] Python 날짜 및 시간 표기법, 날짜 시간 계산 방법 총정리 : timedelta(), datetime()

[파이썬] 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


카테고리의 다른 글
error: Content is protected !!