본문 바로가기
Computer & Program/python

[python] 날짜 (datetime)

by TDRemon 2024. 5. 13.
반응형

안녕하세요. 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

댓글