반응형
안녕하세요. TDR입니다.
오늘은 간략하게 python에서 시간과 날짜를 다루는 법을 정리해 보겠습니다.
import datetime as dt
now_date = dt.datetime.now()
print(f'now_date : {now_date}')
print(f'now_date.year : {now_date.year}')
print(f'now_date.month : {now_date.month}')
print(f'now_date.day : {now_date.day}')
print(f'now_date.hour : {now_date.hour}')
print(f'now_date.minute : {now_date.minute}')
print(f'now_date.second : {now_date.second}')
print(f'now_date.microsecond : {now_date.microsecond}')
""" Result
now_date : 2024-05-13 15:33:48.546462
now_date.year : 2024
now_date.month : 5
now_date.day : 13
now_date.hour : 15
now_date.minute : 33
now_date.second : 48
now_date.microsecond : 546462
"""
today = dt.datetime.today()
print(f'today : {today}')
print(f'today.year : {today.year}')
print(f'today.month : {today.month}')
print(f'today.day : {today.day}')
print(f'today.hour : {today.hour}')
print(f'today.minute : {today.minute}')
print(f'today.second : {today.second}')
print(f'today.microsecond : {today.microsecond}')
""" Result
today : 2024-05-13 15:34:28.157743
today.year : 2024
today.month : 5
today.day : 13
today.hour : 15
today.minute : 34
today.second : 28
today.microsecond : 157743
"""
보면 now()나 today()나 결과가 동일합니다. 같은 함수를 왜 2개나 만들었나 싶지만, 구현부를 보면 다음과 같은 차이가 있습니다.
### datetime.py
@classmethod
def now(cls, tz=None):
"Construct a datetime from time.time() and optional time zone info."
t = _time.time()
return cls.fromtimestamp(t, tz)
@classmethod
def today(cls):
"Construct a date from time.time()."
t = _time.time()
return cls.fromtimestamp(t)
즉, now()는 timezone을 지정해서 해당 지역의 현재 datetime을 가져올 수 있고, today()는 무조건 현재 환경의 timezone을 가져오는 함수입니다.
오늘 날짜 외에도 특정 날짜와 시간을 지정해서 datetime 객체를 생성할 수도 있습니다.
some_day = dt.datetime(2024, 12, 31, 12, 34, 56, 123456)
print(f'some_day : {some_day}') # some_day : 2024-12-31 12:34:56.123456
그리고 다음 함수를 통해 format을 변경할 수도 있습니다.
today = dt.datetime.today().strftime('%Y/%m/%d %H:%M:%S.%f')
print(f'today : {today}') # today : 2024/05/13 15:39:14.527259
format 변경 뿐만 아니라 datetime의 값도 timedelta()를 통해 변경이 가능합니다.
today = dt.datetime.today()
print(f'today : {today}') # today : 2024-05-13 15:42:41.297878
yesterday = dt.datetime.today() - dt.timedelta(1)
print(f'yesterday : {yesterday}') # yesterday : 2024-05-12 15:42:41.297916
custom_day = dt.datetime.today() - dt.timedelta(days=3, hours=13, minutes=22, seconds=12, microseconds=123456)
print(f'custom_day : {custom_day}') # custom_day : 2024-05-10 02:20:29.174477
그리고 시, 분, 초, 밀리초는 필요 없고 오직 날짜만 필요할 경우 datetime이 아닌 date를 통해서 객체를 생성할 수 있습니다.
today = dt.date.today()
print(f'today : {today}') # today : 2024-05-13
date의 사용법은 datetime과 대동소이하기 때문에 별도로 정리하진 않겠습니다.
반응형
'Computer & Program > python' 카테고리의 다른 글
[python] Shell script 실행 (0) | 2024.03.20 |
---|---|
[python] for & while & print (0) | 2024.03.16 |
[python] String(문자열) 포함 여부 확인 (0) | 2024.03.14 |
[python] Python 특징 (0) | 2024.03.12 |
[python] Package & Module (0) | 2024.03.10 |
댓글