Python - datetime (날짜, 시간)

JS · 11 Oct 2020

datetime은 날짜와 시간을 다루는 라이브러리입니다.

이 라이브러리를 활용하여 현재 시간을 구하거나, 특정 시간 포맷의 문자열로 변환할 수도 있습니다.

다음과 같은 내용들을 알아보겠습니다.

  • 현재 날짜 및 시간
  • 현재 날짜
  • date, datetime 객체 생성
  • Timestamp로 date, datetime 객체 생성
  • date 객체의 year, month, day
  • time 객체 생성
  • timedelta
  • 특정 시간 형식으로 변환
  • 문자열을 datetime 객체로 변환

현재 날짜 및 시간

now()는 현재 날짜, 시간 정보를 갖고 있는 datetime 객체를 생성합니다.

import datetime

datetime_object = datetime.datetime.now()
print(datetime_object)
print(type(datetime_object))

Output:

2020-10-11 21:37:45.648730
<class 'datetime.datetime'>

from datetime을 사용하여 간단히 datetime.now()로 표현할 수도 있습니다.

from datetime import datetime

datetime_object = datetime.now()
print(datetime_object)

현재 날짜

today()는 현재 날짜 정보를 갖고 있는 date 객체를 생성합니다.

import datetime

date_object = datetime.date.today()
print(date_object)
print(type(date_object))

Output:

2020-10-11
<class 'datetime.date'>

from datetime으로 date.today()처럼 간단히 표현할 수 있습니다.

from datetime import date

today = date.today()
print(today)

Output:

2020-10-11

date, datetime 객체 생성

특정 날짜 정보를 갖고 있는 datetime 객체를 직접 생성할 수도 있습니다.

다음과 같이 생성자에 인자를 전달하면 됩니다.

  • datetime(year, month, day, hour, min, second)
  • date(year, month, day)
d = datetime(2020, 10, 11, 10, 30, 20)
print(d)

a = date(2018, 10, 11)
print(a)

Output:

2020-10-11 10:30:20
2018-10-11

Timestamp로 date, datetime 객체 생성

Timestamp는 1970/01/01 (UTC)부터 어떤 시간까지의 초를 계산한 값입니다.

다음과 같이 fromtimestamp()의 인자로 timestamp를 전달하면 이것에 해당하는 date, datetime 객체가 생성됩니다.

from datetime import date
from datetime import datetime

date_obj = date.fromtimestamp(1602374400)
print("Current Date =", date_obj)

datetime_obj = datetime.fromtimestamp(1602374400)
print("Current DateTime =", datetime_obj)

Output:

Current Date = 2020-10-11
Current DateTime = 2020-10-11 09:00:00

date 객체의 year, month, day

다음과 같이 date 객체에서 year, month, day 값을 가져올 수 있습니다.

from datetime import date

today = date.today()
print("year:", today.year)
print("month:", today.month)
print("day:", today.day)

Output:

year: 2020
month: 10
day: 11

time 객체 생성

time()은 인자로 전달된 값으로 time 객체를 생성합니다.

from datetime import time

# time(hour = 0, minute = 0, second = 0)
a = time()
print("a =", a)
print(type(a))

# time(hour, minute, second)
b = time(15, 25, 30)
print("b =", b)

# time(hour, minute and second)
c = time(hour = 15, minute = 25, second = 30)
print("c =", c)

# time(hour, minute, second, microsecond)
d = time(15, 25, 30, 123456)
print("d =", d)

Output:

a = 00:00:00
<class 'datetime.time'>
b = 15:25:30
c = 15:25:30
d = 15:25:30.123456

다음과 같이 time 객체에서 hour, minute, second 등의 값일 읽을 수 있습니다.

from datetime import time

a = time(15, 25, 30)

print("time =", a)
print("hour =", a.hour)
print("minute =", a.minute)
print("second =", a.second)
print("microsecond =", a.microsecond)

Output:

time = 15:25:30
hour = 15
minute = 25
second = 30
microsecond = 0

timedelta

timedelta는 두개의 시간 객체의 차이를 표현합니다.

다음과 같이 두개의 date, datetime을 빼면 timedelta 객체가 생성되며 시간 차이 값을 갖고 있습니다.

from datetime import datetime, date

time1 = date(year = 2020, month = 10, day = 11)
time2 = date(year = 2018, month = 11, day = 22)
time_delta = time1 - time2
print("time_delta =", time_delta)
print("type =", type(time_delta))

time1 = datetime(year = 2020, month = 10, day = 11, hour = 15, minute =43, second = 30)
time2 = datetime(year = 2018, month = 11, day = 22, hour = 12, minute = 20, second = 11)
time_delta = time1 - time2
print("time_delta =", time_delta)
print("type =", type(time_delta))

Output:

time_delta = 689 days, 0:00:00
type = <class 'datetime.timedelta'>
time_delta = 689 days, 3:23:19
type = <class 'datetime.timedelta'>

특정 시간 형식으로 변환

strftime()는 datetime 객체를 원하는 시간 형식으로 변환하고 그 결과를 문자열로 리턴합니다.

from datetime import datetime

# current date and time
now = datetime.now()

format_date = now.strftime("%H:%M:%S")
print("time:", format_date)

format_date = now.strftime("%m/%d/%Y, %H:%M:%S")
# mm/dd/YY H:M:S format
print("date and time:", format_date)

format_date = now.strftime("%d/%m/%Y, %H:%M:%S")
# dd/mm/YY H:M:S format
print("date and time:", format_date)

Output:

time: 21:57:38
date and time: 10/11/2020, 21:57:38
date and time: 11/10/2020, 21:57:38

문자열을 datetime 객체로 변환

strptime()는 문자열로 표현된 시간을 datetime 객체로 변환합니다.

다음과 같이 문자열을 파싱하고 datetime 객체로 변환할 수 있습니다.

from datetime import datetime

date_str = "11 October, 2020"
datetime_obj = datetime.strptime(date_str, "%d %B, %Y")
print("date =", datetime_obj)
print(type(datetime_obj))

date_str = "11/10/2020, 12:20:30"
datetime_obj = datetime.strptime(date_str, "%d/%m/%Y, %H:%M:%S")
print("date =", datetime_obj)
print(type(datetime_obj))

Output:

date = 2020-10-11 00:00:00
<class 'datetime.datetime'>
date = 2020-10-11 12:20:30
<class 'datetime.datetime'>
댓글을 보거나 쓰려면 이 버튼을 눌러주세요.
codechachaCopyright ©2019 codechacha