당신은 멋쟁이, 우리는 장고쟁이~

0%

Python 기초 16편 - Date and Time

Python 기초 - Date and Time


날짜와 시간


datetime 모듈은 날짜와 시간들을 간단한 혹은 복잡한 방법으로 다룰수 있게 해주는 클래스들을 제공합니다.


Datetime 모듈은 세가지 기본 객체 타입들을 가지고 있습니다.


1) date

2) time

3) datetime


date


1
2
3
4
5
6
7
8
9
# Date (날짜)를 두룰때 
# datetime.date.today() 오늘 날짜를 갖습니다

import datetime
today = datetime.date.today()
print(f'오늘 날짜는 {today} 입니다')

new_year = datetime.date(2021,1,1)
print(f'올해 신년 날짜는 {new_year} 입니다')


Time


1
2
3
4
5
6
7
8
9
# Time (시간) 을 다룰때
# datetime.time() 은 시간을 갖습니다
import datetime
# time 객체
noon = datetime.time(12, 0, 0)
print(noon)

three_pm = datetime.time(15, 0, 0)
print(three_pm)


datetime


1
2
3
4
5
6
7
8
9
10
11
12
13
14
# time 을 다룰때, date 와 time 둘의 값을 가진 객체를 가질수 있습니다 
# Datetime 객체

import datetime
now = datetime.datetime.now()

print(now)

import datetime

# 특정 datetime

my_birthday = datetime.datetime(2000, 12, 18, 18, 28, 0)
print(my_birthday)


날짜를 순회하기


시작하는 날짜부터 끝나는 날짜 사이에 날짜들을 순회하면서 추력할수 있습니다


예를들면,


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 시작날짜부터 끝나는 날짜까지 순회하면 각 날짜들을 출력 

import datetime

# 날짜간의 간격을 timedelta 로 지정해 줍니다
day_delta = datetime.timedelta(days=1)

# 시작 날짜를 start_date 오늘 날짜로 지정해주고
start_date = datetime.date.today()

# 끝나는 날짜를, start_date 으로부터 7 time_delta 가 지난 날짜로 지정해 줍니다
# 즉, 오늘부터 7일 후

end_date = start_date + 7 * day_delta

# 시작날짜부터 끝나는 날짜까지 순회하면서, 각 날짜들을 출력해 봅니다
for i in range((end_date - start_date).days)
print(start_date + i * day_delta)

시간 차이를 계산할수 있습니다


timedelta 모듈은 시간 사이의 차이를 계산할수 있습니다.


예를들면,


1
2
3
4
5
6
7
8
9
10
# timedelta 모듈은 시간간의 차이를 계산할수 있습니다 
from datetime import datetime, timedelta
now = datetime.now()
print(now)

later = datetime(2020, 12, 18)

print(later)

delta = later - now

delta 는 timedelta type 입니다


1
2
3
4
5
6
7
8
9
from datetime import datetime, timedelta 
now = datetime.now()
later = datetime(2020, 12, 18)

delta = later - now

print(type(delta))
print(delta.days)
print(delta.seconds)

특정 날짜 기준으로 특정 일수 이후의 날짜


1
2
3
4
5
6
7
8
9
# 특정 날짜 이후에 특정 일 이후 날짜 

from datetime import date, timedelta

current_date = date.today().isoformat()
days_after = (date.today() + timedelta(days=30).isoformat())

print(current_date)
print(days_after)

특정 날짜 이후 특정 일수 이전 날짜


1
2
3
4
5
6
7
from datetime import date, timedelta 

current_date = date.today().isoformat()
days_before = (date.today() - timedelta(days=30).isoformat())

print(current_date)
print(days_before)

간단한 날짜 계산


1
2
3
4
5
6
7
8
9
10
11
12
13
# 간단한 날짜 계산 
import datetime

today = datetime.date.today()
print("오늘은 {}".format(today))

yesterday = today - datetime.timedelta(days=1)
print("어제는 {}".format(yesterday))

tomorrow = today + datetime.timedelta(days=1)
print('내일은 {}'.format(tomorrow))

print("어제와 오늘 사이의 시간 : {}".format(tomorrow - yesterday))

Timezone 바꾸기


타임존을 바꾸기 위해서는, datetime 객체가 timezone 을 알아야 합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# timezone 바꾸기 

from datetime import datetime
from dateutil import tz

utc = tz.tzutc()
local = tz.tzlocal()

utc_now = datetime.utcnow()
print(utc_now)

utc_now = utc_now.replace(tzinfo=utc)
print(utc_now)

local_now = utc_now.astimezone(local)
print(local_now)