오늘 정리할 내용은 python에서 날짜와 시간을 다룰 수 있는 Datetime module이다. date, time 관련한 module은 사실 .. 생각보다 쓸 일이 별로 없으면서도 막상 필요할 때는 아무것도 기억이 나지 않는 .. 그런 모듈이다.
그래도 공부를 한 김에 한 번쯤은 정리를 해두면, '그때 그런 게 있었지 ..' 할 수 있으니 정리를 해보자.
datetime 모듈 소개 및 기초
현재 날짜, 시간 불러오기
사용 방법은 생각보다 직관적이고 간단하다.
우선 현재 날짜와 시간을 불러올 수 있는 코드를 작성해보자.
import datetime
time_now = datetime.datetime.now()
print(time_now)
print(type(time_now))
datetime module을 import 하고, datetime 객체를 불러와서, now() 메소드를 실행해준다.
그러면 위와 같이 현재 날짜와 시간이 나타나고, type을 찍어보면 datetime module의 datetime class라는 걸 알 수 있다.
현재 날짜, 시간에서 년 / 월 / 일 추출하기
이제 위의 time_now 변수로부터 년, 월, 일 등을 추출해보자.
print(type(time_now.year))
print(time_now.year)
print(time_now.month)
print(time_now.day)
print()
# Monday is 0, Sunday is 6
day_of_week = time_now.weekday()
print(day_of_week)
결과는 아래와 같다.
<class 'int'>
2023
7
18
1
먼저, time_now에 있는 attribute를 가져오면 int 형태인 것을 알 수 있다. 또한, 년 / 월 / 일은 year / month / day를 통해서 가져오면 된다. 마지막으로, 요일을 숫자로 표현할 수 있는데, 별다른 옵션을 주지 않는다면 weekday() 메소드에서 Monday가 0, Sunday가 6으로 나타난다. 2023년 7월 18일은 화요일이기 때문에 1이 나타났다.
datetime class 생성하기, string 변환하기
custom date로 생성
이번에는 custom date를 통해서 datetime class를 직접 생성해보자.
# create datetime object
my_date = datetime.datetime(
year=2023,
month=7,
day=18
)
print(my_date)
print(type(my_date))
print()
위에서 year, month, day에 각각 20203, 7, 18이라는 값을 넣어주고 datetime class를 생성했다.
2023-07-18 00:00:00
<class 'datetime.datetime'>
원하는 결과가 잘 나타난다.
string에서 datetime으로, datetime에서 string으로
두 번째는 datetime과 string을 오고가는 방법이다.
# string to datetime object
datetime_object = datetime.datetime.strptime("2023-07-18 00:00:00", "%Y-%m-%d %H:%M:%S")
print(datetime_object)
print(type(datetime_object))
print()
먼저 string에서 datetime object를 만드는 방법은 위와 같다.
strptime 메소드를 사용해주면 되고, string과 함께 원하는 형식을 입력하면 된다.
2023-07-18 00:00:00
<class 'datetime.datetime'>
반대로 datetime object에서 string으로 변환할 때에는, strftime 메소드를 사용한다.
# datetime object to string
datetime_str = datetime_object.strftime("%Y-%m-%d %H:%M:%S")
print(type(datetime_str))
print(datetime_str)
print()
argument로는 원하는 출력 형식을 입력하면 된다.
여기에서는 "%Y-%m-%d %H:%M:%S" 를 사용했다.
<class 'str'>
2023-07-18 00:00:00
날짜, 시간 차이 계산하기
마지막으로 알아볼 것은, 날짜 및 시간의 차이를 계산하는 방법이다.
우선 서로 다른 date time에 대해서는 그냥 연산자를 사용하면 된다.
print(datetime_object)
print(my_date)
print(datetime_object - my_date)
(위에서 저장한 변수를 기억하자)
한편 하나의 datetime object에 시간, 초 등을 더하거나 빼고 싶을 때도 있다.
여기에서는 timedelta라는 module을 사용하면 된다.
timedelta 함수 위에 커서를 올리면 위와 같은 설명을 볼 수 있는데, days 이하의 단위로만 조정을 할 수 있는 것처럼 보인다. 그래서 1년을 늘리고 싶다면 custom date를 사용해서 object를 만들거나 혹은 days = 365로 주고 사용해야 할 것처럼 보인다. (참고: https://docs.python.org/3/library/datetime.html#examples-of-usage-timedelta)
사용 예시는 아래와 같다.
# timedelta
from datetime import timedelta
datetime_object = datetime.datetime.now()
print(datetime_object + timedelta(days=365))
print()
print(datetime_object - timedelta(days=1))
print()
print(datetime_object + timedelta(hours=3))
print()
결과는 ?!
2024-07-17 00:57:03.610845
2023-07-17 00:57:03.610845
2023-07-18 03:57:03.610845
정리를 하고 보니까
쓸 일 없을 것 같은데 괜히 정리한 것 같기도 하고.. 어쨌든 끝.
'Pyhon 기초, 실전' 카테고리의 다른 글
[Python 기초] lambda, filter function: 아는 사람만 쓰는 함수 (0) | 2023.07.22 |
---|---|
[Python 기초] map: 아는 사람만 쓰는 built-in function (0) | 2023.07.19 |
[Python 기초] list, dictionary comprehension and conditional comprehension (1) | 2023.07.17 |
[Python 기초] 여러 가지 파일 읽고 쓰기 (txt, csv, pickle, json 등) (0) | 2023.07.16 |
[Python 기초] set과 tuple 그리고 tuple의 packing, unpacking (0) | 2023.07.14 |