산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

Python datetime 마스터하기: 날짜, 시간, 타임존 실전 가이드

Python datetime 마스터하기

실습 예제와 명확한 설명으로 Python에서 날짜와 시간 다루기 알아보기.

동영상: Python datetime – 날짜와 시간 다루기

Python datetime 모듈은 날짜/시간 조작 강력한 도구 제공. 현재 시점 조회부터 포맷팅, 타임존 처리까지 일반적인 작업 안내.


예제 1: 현재 날짜와 시간 얻기

import datetime
datetime_object = datetime.datetime.now()
print(datetime_object)

출력 예시:

2018-12-19 09:26:03.478039

import datetime으로 모듈 임포트. datetime 클래스에 now() 메서드로 지역 날짜/시간 반환.


예제 2: 현재 날짜 얻기

import datetime
date_object = datetime.date.today()
print(date_object)

출력:

2018-12-19

date 클래스 today()로 현재 캘린더 날짜 획득.


datetime 모듈 탐색

dir(datetime)로 모든 속성/클래스 나열:

import datetime
print(dir(datetime))

출력:

['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', 'datetime', 'datetime_CAPI', 'time', 'timedelta', 'timezone', 'tzinfo']

핵심 클래스: date, time, datetime, timedelta.


datetime.date 클래스

date 클래스는 캘린더 날짜(년, 월, 일) 표현.


예제 3: 날짜 객체 생성

import datetime
d = datetime.date(2019, 4, 13)
print(d)

결과:

2019-04-13

date() 생성자는 year, month, day 인수 받음. 변수 a는 date 인스턴스.


date 클래스만 임포트:

from datetime import date
a = date(2019, 4, 13)
print(a)

예제 4: 현재 날짜

클래스메서드 today() 사용:

from datetime import date
today = date.today()
print("Current date =", today)

예제 5: 타임스탬프에서 변환

유닉스 타임스탬프는 1970-01-01 UTC 이후 초. fromtimestamp()로 변환:

from datetime import date
timestamp = date.fromtimestamp(1326244364)
print("Date =", timestamp)

출력:

Date = 2012-01-11

예제 6: 년/월/일 접근

from datetime import date
today = date.today()
print("Current year:", today.year)
print("Current month:", today.month)
print("Current day:", today.day)

datetime.time

time 클래스는 날짜 없는 시각 저장.


예제 7: 시간 객체 생성

from datetime import time
a = time()
print("a =", a)
b = time(11, 34, 56)
print("b =", b)
c = time(hour=11, minute=34, second=56)
print("c =", c)
d = time(11, 34, 56, 234566)
print("d =", d)

결과:

a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11:34:56.234566

예제 8: 시간 구성요소 검사

from datetime import time
a = time(11, 34, 56)
print("hour =", a.hour)
print("minute =", a.minute)
print("second =", a.second)
print("microsecond =", a.microsecond)

출력:

hour = 11 minute = 34 second = 56 microsecond = 0

datetime.datetime

datetime 클래스는 날짜와 시간 정보 결합.


예제 9: datetime 객체 생성

from datetime import datetime
# 년, 월, 일
A = datetime(2018, 11, 28)
print(A)
# 전체 지정
B = datetime(2017, 11, 28, 23, 55, 59, 342380)
print(B)

결과:

2018-11-28 00:00:00 2017-11-28 23:55:59.342380

년/월/일 필수; 시/분/초/마이크로초 기본 0.


예제 10: 구성요소 & 타임스탬프 검사

from datetime import datetime
A = datetime(2017, 11, 28, 23, 55, 59, 342380)
print("year =", A.year)
print("month =", A.month)
print("day =", A.day)
print("hour =", A.hour)
print("minute =", A.minute)
print("timestamp =", A.timestamp())

출력:

year = 2017 month = 11 day = 28 hour = 23 minute = 55 timestamp = 1511913359.34238

datetime.timedelta

timedelta 객체는 두 날짜/시간 간 기간 표현.


예제 11: 날짜/시간 간 차이

from datetime import datetime, date
T1 = date(year=2018, month=7, day=12)
T2 = date(year=2017, month=12, day=23)
T3 = T1 - T2
print("T3 =", T3)
T4 = datetime(year=2018, month=7, day=12, hour=7, minute=9, second=33)
T5 = datetime(year=2019, month=6, day=10, hour=5, minute=55, second=13)
T6 = T4 - T5
print("T6 =", T6)
print("type of T3 =", type(T3))
print("type of T6 =", type(T6))

출력:

T3 = 201 days, 0:00:00 T6 = -333 days, 1:14:20 type of T3 = <class 'datetime.timedelta'> type of T6 = <class 'datetime.timedelta'>

예제 12: timedelta 객체 빼기

from datetime import timedelta
T1 = timedelta(weeks=2, days=5, hours=1, seconds=33)
T2 = timedelta(days=4, hours=11, minutes=4, seconds=54)
T3 = T1 - T2
print("T3 =", T3)

출력:

T3 = 14 days, 13:55:39

예제 13: 음수 timedelta

from datetime import timedelta
T1 = timedelta(seconds=33)
T2 = timedelta(seconds=54)
T3 = T1 - T2
print("T3 =", T3)
print("abs(T3) =", abs(T3))

출력:

T3 = -1 day, 23:59:39 abs(T3) = 0:00:21

예제 14: timedelta 총 초

from datetime import timedelta
T = timedelta(days=5, hours=1, seconds=33, microseconds=233423)
print("total seconds =", T.total_seconds())

출력:

total seconds = 435633.233423

날짜 더하기, timedelta 숫자 곱하기/나누기로 기간 스케일링 가능.


날짜 포맷팅과 파싱

로케일마다 날짜 포맷 다름(미국 mm/dd/yyyy vs 영국 dd/mm/yyyy). Python strftime()과 strptime()으로 datetime 객체와 포맷 문자열 간 변환.


Python strftime() – datetime을 문자열로

from datetime import datetime
now = datetime.now()
# 시:분:초
T = now.strftime("%H:%M:%S")
print("time:", T)
# 미국 포맷
S1 = now.strftime("%m/%d/%Y, %H:%M:%S")
print("S1:", S1)
# 영국 포맷
S2 = now.strftime("%d/%m/%Y, %H:%M:%S")
print("S2:", S2)

일반적 출력:

time: 04:34:52 S1: 12/26/2018, 04:34:52 S2: 26/12/2018, 04:34:52

자주 쓰는 포맷 코드: %Y 년, %m 월, %d 일, %H 시, %M 분, %S 초.


Python strptime() – 문자열을 datetime으로

from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)

출력:

date_string = 21 June, 2018 date_object = 2018-06-21 00:00:00

%d 일, %B 전체 월 이름, %Y 년.


타임존 인식

다른 존에서 시간 표시/계산 필요 앱이면 수동 계산 피하고 pytz 라이브러리 사용.

from datetime import datetime
import pytz
local = datetime.now()
print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S"))
tz_NY = pytz.timezone('America/New_York')
dt_NY = datetime.now(tz_NY)
print("NY:", dt_NY.strftime("%m/%d/%Y, %H:%M:%S"))
tz_London = pytz.timezone('Europe/London')
dt_London = datetime.now(tz_London)
print("London:", dt_London.strftime("%m/%d/%Y, %H:%M:%S"))

샘플 출력:

Local: 12/20/2018, 13:10:44 NY: 12/20/2018, 08:10:44 London: 12/20/2018, 13:10:44

datetime_NY와 datetime_London 객체는 타임존 인식 타임스탬프 포함.


python

  1. 파이썬 데이터 타입 마스터하기: 실전 가이드
  2. 파이썬 연산자 마스터하기: 종합 가이드
  3. 파이썬 pass 문 마스터하기: 실전 가이드
  4. 파이썬 함수 인자 마스터하기: 위치, 키워드, 기본 매개변수
  5. Python 딕셔너리 마스터하기: 생성, 조작, 고급 기법
  6. Python 이터레이터: 작동 원리와 직접 만들기
  7. Python 클로저 이해하기: 중첩 함수가 변수 캡처하는 방법
  8. Python 현재 날짜와 시간 가져오기: 실전 가이드
  9. Python으로 현재 시간과 시간대 데이터 쉽게 가져오기
  10. Python time.sleep() 완전 정복: 모범 사례, 멀티스레딩, 실전 예제