본문 바로가기
개발/Python

Python dealing with time

by 아르카눔 2025. 4. 21.

파이썬에서 시간 다루기 

 

머신러닝에서 데이터 분석을 하거나, DB에서 매출을 합산한다거나, 로깅을 한다거나 여러가지 사정으로 시간을 기록할 일이 많아진다.

 

시간은 크게 2가지 형식으로 다루게 된다. 

 

  • Unix timestamp
  • yy-mm-dd hh:mm:ss.f 형태 

시간을 다루는 주요 패키지로는 아래와 같다.

 

  1. time
  2. datetime
  3. pytz

 

1. time

 

Unix timestamp를 생성한다.

 

유닉스 타임스탬프란 1970년 1월 1일 00:00:00초 (UTC 0)을 기준으로 몇 초가 지나갔는지를 표시한 시간 표현법이다.

 

import time
ct = time.time()
print(ct)

>> 1745195940.8100421

 

 

2. datetime

 

우리에게 익숙한 시간 형태다.

 

연-월-일 시:분:초.마이크로초 (yy-mm-dd hh:mm:ss.f )

 

로 시간을 표시한다. 

 

 

기본 사용법

 

기본적인 현재 시간 혹은 연, 월, 일을 직접 입력해서 생성하는 방식은 다음과 같다. 

from datetime import datetime
x = datetime.now()
print(x)
>> 2025-04-21 09:32:40.656855

x = datetime(2020, 5, 17)
print(x)
>> 2020-05-17 00:00:00

 

 

시간 특성 뽑아내기

 

datetime은 연, 월, 일, 시간, 분, 초, 월, 요일을 뽑아낼 수 있다. 

x = datetime(2020, 5, 17) # 2020-05-17 00:00:00

print(x.year)
>> 2020

print(x.month)
>> 5

print(x.day)
>> 17

print(x.hour)
>> 0

print(x.minute)
>> 0

print(x.second)
>> 0

print(x.strftime("%B"))
>> May

print(x.strftime("%A"))
>> Sunday

 

 

timedelta

 

시간 차이를 나타내는 객체로 days, seconds, microseconds를 속성으로 갖는다. 

 

며칠, 몇시간, 몇분, 몇초가 차이 나는지 알아서 계산해준다.

x = datetime(2020, 5, 17, 12, 30, 45)
y = datetime(2020, 5, 17, 13, 00, 15)
print(x)
print(y)
print(y - x)
>> 
2020-05-17 12:30:45
2020-05-17 13:00:15
0:29:30

x = datetime(2020, 5, 17)
y = datetime(2020, 6, 1)
print(y - x)
>>
15 days, 0:00:00

y = datetime(2022, 6, 1)
dt = y - x
print(dt)
print( dt.days, dt.seconds, dt.microseconds)
>> 
745 days, 0:00:00
745 0 0

 

 

From unix timestamp to datetime

 

time으로 구한 유닉스 시간을 우리에게 익숙한 yy-mm-dd hh:mm:ss.f 형태로 변환한다.

 

unix_to_epoch = datetime.fromtimestamp(ct)
print(unix_to_epoch)
>> 2025-04-21 09:39:00.810042

 

 

From string to datetime

 

문자열 형태의 날짜를 datetime 객체 형태로 변환하는 방법이다. 

print(datetime.fromisoformat('2011-11-04'))
>> 2011-11-04 00:00:00

print(datetime.fromisoformat('2011-11-04T00:05:23'))
>> 2011-11-04 00:05:23

print(datetime.fromisoformat('2011-11-04 00:05:23.283'))
>> 2011-11-04 00:05:23.283000

print(datetime.fromisoformat('2011-11-04 00:05:23.283+00:00'))
>> 2011-11-04 00:05:23.283000+00:00

print(datetime.fromisoformat('2011-11-04T00:05:23+04:00'))
>> 2011-11-04 00:05:23+04:00

 

 

 

From datetime to various time formats

 

datetime 객체를 유닉스 시간, isoformat, yy-mm-dd나 dd/mm/yy, 요일 일 월 년 등등 여러가지 형태로 변환하는 방법이다. 

 

d = datetime(2023, 2, 13, 10, 24, 00)

print(d.timestamp()) #unix timestamp
>> 1676251440.0

print(d.isoformat())
>> 2023-02-13T10:24:00

print(d.strftime("%d/%m/%y"))
>> 13/02/23

print(d.strftime("%y-%m-%d"))
>> 23-02-13

print(d.strftime("%A %d. %B %Y"))
>> Monday 13. February 2023

print(d.ctime())
>> Mon Feb 13 10:24:00 2023

 

 

 

 

 

3. pytz

 

timezone 시간대를 이용하는 방법이다. 

 

한국표준시 KST는 UTC+9이므로 이를 이용하면 된다.

 

unix_to_epoch_utc = datetime.fromtimestamp(ct, tz=pytz.utc)
print(unix_to_epoch_utc)
>> 2025-04-21 00:39:00.810042+00:00

unix_to_epoch_kst = datetime.fromtimestamp(ct, tz=pytz.utc).astimezone(pytz.timezone('Asia/Seoul'))
print(unix_to_epoch_kst)
>> 2025-04-21 09:39:00.810042+09:00

>>
datetime.datetime(2025, 4, 21, 10, 22, 56, 353368, tzinfo=<DstTzInfo 'Asia/Seoul' KST+9:00:00 STD>)

 

 

 

 

 

 

 

 

References:

https://codingdog.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-pytz%EB%A5%BC-%EA%B0%84%EB%8B%A8%ED%95%98%EA%B2%8C-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B3%A0-timezone-%EC%A0%95%EB%B3%B4%EB%A5%BC-%EA%B0%84%EB%8B%A8%ED%95%98%EA%B2%8C-%EA%B0%80%EC%A0%B8%EC%99%80-%EB%B4%85%EC%8B%9C%EB%8B%A4

https://docs.python.org/3/library/datetime.html

https://www.w3schools.com/python/python_datetime.asp

https://www.unixtimestamp.com/

https://wikidocs.net/135093

https://velog.io/@jcinsh/Python-Datetime-tutorial

 

'개발 > Python' 카테고리의 다른 글

Python의 sorted 함수  (0) 2025.02.19
파이썬의 여러 가상환경 비교  (0) 2024.08.03
Anaconda와 가상 환경 관리  (0) 2024.08.01
파이썬의 None과 NaN  (0) 2024.07.12