python/기타

python datetime, 날짜 데이터 다루기

Memory! 2022. 5. 26. 17:05
728x90
반응형

Data를 처리하는 과정에서 날짜 형태의 데이터를 변환하거나 계산하는 경우가 종종 있습니다.

이럴 때 datetime package를 이용하면 날짜데이터의 포멧의 변경이 가능하고, 날짜 데이터의 계산 도 가능합니다.

 

1. 현재 시간 가져오기

datetime.now() 함수를 통해 얻을 수 있습니다.

from datetime import datetime
now = datetime.now()
print(now)
2022-05-26 15:33:58.614548 # 출력

now를 보면 datetime 타입의 데이터이고 년, 월, 일, 시, 분 초, 밀리초 까지 각각을 담고 있음을 확인할 수 있습니다.

즉, 각각을 따로 저장해서 사용 할 수 있습니다.

now
datetime.datetime(2022, 5, 26, 15, 33, 58, 614548) # 값 확인

print(now.year)
print(now.month)
print(now.day)
print(now.hour)
print(now.minute)
print(now.second)
print(now.microsecond)
# 출력
2022
5
26
15
33
58
614548

 

2. 원하는 날짜로 datetime 만들기

datetime() 함수안에 년, 월, 일, 시, 분, 초 순서로 값을 넣어주면 원하는 날짜의 datetime 타입의 값을 만들 수 있습니다.

make_date = datetime(2020,12,10,13,25,55)
print(make_date)
2020-12-10 13:25:55 # 출력

make_date
datetime.datetime(2020, 12, 10, 13, 25, 55) #값 확인

위에 현재 시간을 활용하면 현재시간에서 2시간 전과 같이 특정 시간의 날짜를 만들 수 있습니다.

make_date = datetime(now.year, now.month, now.day, now.hour -2 ,now.minute, now.second)
print(make_date)
2022-05-26 13:33:58 # 출력

make_date
datetime.datetime(2022, 5, 26, 13, 33, 58) # 값 확인

3. 날짜 데이터 format 변경

- datetime.strftime() 과 datetime.strptime()으로 날짜 형식의 데이터를 다룹니다.

1) strftime() : datetime 타입의 날짜 값을 string으로 변환 할 때 사용합니다.

str_now = now.strftime('%y-%m-%d %H:%M:%S:%f')
print(str_now)
22-05-26 15:33:58:614548 # 출력 

#type 확인
type(str_now)
str # string 타입임을 확인

 

2) strptime() : 날짜 형식으로 되어있는 string을 datetime 타입으로 만들어 줄 때 사용합니다.

 - 날짜 형식의 string이 어떤 형식으로 되어있는지를 (format)을 같이 넣어야 합니다.

 - 위에 생성한 str_now 변수를 다시 datetime으로 만들어 보겠습니다.

# str_now = 22-05-26 15:33:58:614548
date_now = datetime.strptime(str_now, '%y-%m-%d %H:%M:%S:%f')
print(date_now)
2022-05-26 15:33:58.614548 # 출력

date_now
datetime.datetime(2022, 5, 26, 15, 33, 58, 614548) # 값 확인

- strptime의 두번 째 인자는 날짜 형식의 String이 어떻게 생겼는지를 알려줘야 합니다.

- 다른 구분자, 다른 예시로 확인하겠습니다.

# 날짜 형식의 String 구분자를 변경해서 테스트 
ex_str1 = '22/05/26 15-33-58'
date_ex_str1 = datetime.strptime(ex_str1, '%y/%m/%d %H-%M-%S')
print(date_ex_str1)
2022-05-26 15:33:58 # 출력

# 구분자가 아예 없는 String
str_date = '220526153322'
date_ex_str2 = datetime.strptime(str_date, '%y%m%d%H%M%S')
print(date_ex_str2)
2022-05-26 15:33:22 # 출력

4. 날짜 데이터 계산하기

- 날짜 변수의 year, month 와 같은 값을 직접 가져와 연산 후 datetime을 만드는 방식으로 계산이 가능하지만

timedelta라는 타입을 이용하면 쉽게 계산이 가능합니다.

from datetime import timedelta

delta_time = timedelta(days=25)
print(now - delta_time)
2022-05-01 15:33:58.614548 # 출력 - 25일만큼 뺀 날짜가 출력됨

위와 같이 timedelta를 이용해서 연산을 날짜 데이터를 생성해서 연산에 사용할 수 있습니다.

timedelta에 사용 가능한 옵션은 days, hours, minutes, seconds, weeks 등이 있습니다. (years, months는 사용 불가)

728x90
반응형