본문 바로가기
SW 프로그래밍/파이썬

날짜시간 모듈에 관련 클래스

by N2info 2019. 12. 4.

 

[ 날짜시간 모듈에 관련 클래스 ]

 

[ 클래스 ]

[ 내용 ]

class datetime.date

일반적으로 사용되는 그레고리안 달력의 년,월,일을 나타냄

class datetime.time

시간을 시,분,초,마이크로 초,시간대로 나타냅니다.

class datetime.datetime

date클래스와 time클래스의 조합으로

년,월,일,시,분,초,마이크로 초, 시간대 정보를 나타냅니다.

class datetime.timedelta

두 날짜 혹은 시간 사이의 기간을 표현합니다.

 

 

[ date 클래스 ]

 

datetime.date(year, month, day)

일반적으로 사용되는 년, 월, 일로 표기되는 현재 그레고리안 달력의 날짜를 표현합니다.

숫자로 년, 월, 일을 입력 받아서 date 객체를 생성합니다.

만약 입력된 인자가 아래의 조건을 따르지 않는 경우, ValueError가 발생합니다.

Ÿ datetime.MINYEAR(1) <= year <= datetime.MAXYEAR(9999)

Ÿ 1 <= month <= 12

Ÿ 1 <= day <= 해당 월의 날짜

┗[ date 객체를 반환하는 클래스 메서드 ]┓

클래스 메서드

내용

date.fromtimestamp(timestamp)

타임스탬프 값을 인자로 받아서 date 객체를 반환

date.fromordinal(ordinal)

1년1월1일 이후로 누적된 날짜로부터 date 객체를 반환

date.today()

현재 시스템의 오늘 날짜 date 객체를 반환

┗┓

xample - date 클래스 생성자와 클래스 메서드의 사용 예:

 

[ date 객체 속성 ]

속성

내용

date.year

년(읽기 전용)

date.month

월(읽기 전용)

date.day

일(읽기 전용)

date.max

date 객체의 최대값(9999년 12월 31일)

date.min

date 객체의 최소값(1년 1월 1일)

xample - 각 속성에 대한 예:

 

[ date 객체를 이용하여 다른 값/형식으로 변환하는 메서드 ]

메서드

내용

date.replace(year, month, day)

입력된 인자로 변경된 date 객체를 반환.

원본 객체는 변경되지 않습니다.

date.timetuple()

date 객체의 값을 time.struct_time 시퀀스 객체에 할당.

해당되는 정보가 없는 시,분,초는 '0'으로 초기화 됩니다.

date.toordinal()

1년1월1일 이후로 date객체까지 누적된 날짜를 반환

date.weekday()

요일을 정수로 변환하여 반환 (예:월요일=0, 일요일=6)

(: date(2011, 12, 24).weekday() == 5 )

date.isoweekday()

date.weekday()와 동일하나 월요일=1 ~ 일요일=7로 나타냄.

(: date(2011, 12, 24).isoweekday() == 6 )

xample - 변환 메서드 사용 예:

# date.replace()메서드 호출시, 변경하려는 속성만 명시적으로 전달 변경

 

# date 객체의 값을 바탕으로 다른 형태의 객체를 반환하는 예

 

[ 그 외 date 객체의 출력 형태를 변경하는 메서드 ]

메서드

내용

date.isoformat()

date 객체의 정보를 'YYYY-MM-DD' 형태의 문자열로 반환

date.ctime()

date 객체의 정보를 'Sun Mar 15 00:00:00 2009' 형태의 문자열로

반환합니다. 시,분,초에 대한 정보는 '0'으로 초기화 됩니다.

date.strftime(format)

지정된 포맷에 맞춰 date 객체의 정보를 문자열로 반환합니다.

xample - 출력 형태 변경 메서드 예:

 

 

 

[ time 클래스 ]

 

class datetime.time(hour[, minute[, second[, microsecond[, tzinfo]]]])

time 클래스는 시, 분, 초와 같은 시간을 표현 합니다.

숫자로 시, 분, 초 마이크로 초, 시간대 정보(Time Zone)를 입력 받아서 time 객체를 생성.

만약 입력된 인자가 아래의 조건을 따르지 않는 경우, ValueError가 발생합니다.

Ÿ 0 <= hour < 24

Ÿ 0 <= minute < 60

Ÿ 0 <= second < 60

Ÿ 0 <= microsecond < 1000000

xample - time 객체 생성 예:

 

[ time 객체 속성 ]

속성

내용

time.hour

시(0~23, 읽기 전용)

time.minute

분(0~59, 읽기 전용)

time.second

초(0~59, 읽기 전용)

time.microsecond

마이크로초(0~999999, 읽기 전용)

time.min

time 객체가 표현할 수 있는 최소값을 나타냅니다.

(time(0, 0, 0, 0))

time.max

time 객체가 표현할 수 있는 최대값을 나타냅니다.

(time(23, 59, 59, 999999))

 

[ time 클래스 지원 메서드 ]

메서드

내용

time.replace([hour[, minute[

, second[, microsecond[, tzinfo]]]]])

입력된 값으로 수정된 time 객체를 반환.

원본 객체는 변경되지 않습니다.

time.isoformat()

time 객체의 값을 'HH:MM:SS.mmmmmm' 형식이나

'HH:MM:SS' 형식(마이크로초가 없는 경우)의문자열을 반환

time.strftime(format)

지정된 포맷에 맞춰 time 객체의 정보를 문자열로 반환.

xample :

 

 

 

[ datetime 클래스 ]

 

class datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])

datetime 클래스는 date 클래스와 time 클래스의 조합으로 이루어져 있습니다.

숫자로 각 인자를 받아서 datetime 객체를 생성하며, 년, 월, 일은 생략이 불가능 합니다.

명시적으로 인자를 지정하여 입력할 수 있으며, 생략된 인자는 '0'으로 초기화 됩니다.

만약 입력된 인자가 아래의 조건을 따르지 않는 경우, ValueError가 발생합니다.

Ÿ MINYEAR(1) <= year <= MAXYEAR(9999)

Ÿ 1 <= month <= 12

Ÿ 1 <= day <= 주어진 년도 그리고 달의 날자 개수

Ÿ 0 <= hour < 24

Ÿ 0 <= minute < 60

Ÿ 0 <= second < 60

Ÿ 0 <= microsecond < 1000000

┗[ datetime 객체를 반환하는 메서드 ]┓

메서드

내용

datetime.today()

현재 지방 기준의 datetime 객체를 생성합니다.

datetime.now([tz])

현재 지방 기준의 datetime 객체를 생성합니다.

(시간대 정보가 특별히 입력되지 않으면

플랫폼의 시간대를 그대로 사용합니다)

datetime.utcnow()

UTC 기준의 DATETIME 객체를 생성합니다.

datetime.fromtimestamp(

timestamp[, tz])

타임스탬프를 지방 기준의 DATETIME 객체를 생성합니다.

datetime.

utcfromtimestamp(timestamp)

타임스탬프를 UTC 기준의 DATETIME 객체를 생성합니다.

datetime.fromordinal(ordinal)

1년 1월 1일 이후로 누적된 날짜로부터 datetime 객체를

생성. 시간 관련된 값은 '0'으로 할당 됩니다.

datetime.combine(date, time)

date 객체와 time 객체를 입력받아서 datetime 객체를 생성

datetime.strptime(date_string,

format)

시간을 표현한 사용자가 정의한 형식 문자열을

datetime 객체를 생성합니다.

xample - datetime 객체 생성 예:

 

# datetime 객체를 반환하는 메서드 사용 예:

 

[ datetime 객체 속성 ]

속성

내용

datetime.year

년(읽기 전용)

datetime.month

월(읽기 전용)

datetime.day

일(읽기 전용)

datetime.hour

시(0~23, 읽기 전용)

datetime.minute

분(0~59, 읽기 전용)

datetime.second

초(0~59, 읽기 전용)

datetime.microsecond

마이크로초(0~999999, 읽기 전용)

datetime.min

datetime 객체가 표현할 수 있는 최소값.

(datetime(1, 1, 1))

datetime.max

datetime 객체가 표현할 수 있는 최대값.

((9999, 12, 31, 23, 59, 59, 999999))

 

[ datetime 클래스를 다른 형식으로 변환하는 메서드 ]

메서드

내용

datetime.date()

원본 객체의 년,월,일 정보를 가지고 있는 date 객체 반환

datetime.time()

원본 객체의 시,분,초,마이크로초를 가지고 있는 time 객체 반환

datetime.replace()

입력된 값으로 변경된 datetime 객체를 반환

datetime.timetuple()

datetime 객체의 값을 time.struct_time 형식의 시퀀스 객체로

변환하여 반환.

xample :

 

[ datetime 클래스의 출력과 관련된 메서드 ]

메서드

내용

datetime.weekday()

각 요일을 숫자로 나타냄 (월요일=0 ~ 일요일=6)

(time.struct_time.tm_wday 참조)

datetime.isoweekday()

ISO 형식에 맞도록 각 요일을 숫자로 나타냄.

(월요일=1 ~ 일요일=7)

datetime.isocalendar()

ISO 형식에 맞는 날짜 표현

(ISO year, ISO week number, ISO weekday)을 튜플로 반환.

datetime.isoformat()

datetime 객체를 'YYYY-MM-DDTHH:MM:SS.mmmmmm' 형식

이나 'YYYY-MM-DDTHH:MM:SS'(마이크로초가 0인 경우) 형식

으로 변환하여 문자열로 반환합니다.

datetime.ctime()

datetime 객체를 'Thu Mar 26 18:53:03 2009' 형식의

문자열을 반환

datetime.strftime(format)

입력된 포맷 형식에 맞추어 datetime 객체를 문자열로 반환

xample :

 

 

 

[ timedelta 클래스 ]

 

class datetime.timedelta([days[, seconds[, microseconds[,

milliseconds[, minutes[, hours[, weeks]]]]]]])

새롭게 시작하는 연인들에게 가장 중요한 것이 100일, 1000일과 같은 기념일을 챙기는 것입니다.

이러한 시간, 날짜의 연산을 위하여 파이썬에서는 timedelta 클래스를 사용할 수 있습니다.

timedelta 클래스는 두 날짜 혹은 시간 사이의 기간을 표현 합니다.

 

생성되는 timedelta 객체의 값을 확인해보면 생성자에 전달된 값과 다른 것을 확인할 수 있습니다.

그 이유는 동일한 기간을 표현하는 방식이 다양하게 표현(1weeks와 7days는 동일)될 수 있기

때문에, 입력된 값을 가지고 timedelta 객체에서 정규화 과정을 거쳐 유일한 표현 방식으로

변경하기 때문입니다.

 

[ 정규화 결과 timedelta 객체에 저장되는 값 ]

Ÿ 0 <= microseconds < 1000000

Ÿ 0 <= seconds < 3600*24 (초로 표현할 수 있는 최대값은 하루입니다)

Ÿ -999999999 <= days <= 999999999

xample : timedelta 클래스의 생성 예:

# 표현할 수 있는 가장 작은 값.

 

[ 시간, 날짜의 연산 ]

이제 연인들을 위한 100일, 1000일 계산하는 방법에 대해서 알아보겠습니다.

100일이 너무 길다면, 100 마이크로초, 500초 등도 계산이 가능하니 여러모로 활용이 가능합니다.

두 날짜, 시간 사이의 기간은 timedelta 클래스로 표현하는 방법을 앞에서 설명 드렸습니다.

이렇게 생성된 timedelta 객체를 이용하여 아래의 연산을 수행할 수 있습니다.

연산 결과로는 모두 timedelta 객체가 반환 됩니다.

 

Ÿ timedelta_3 = timedelta_1 + timedelta_2

Ÿ timedelta_3 = timedelta_1 - timedelta_2

Ÿ timedelta_2 = timedelta_1 * int = int * timedelta_1

Ÿ timedelta_2 = timedelta_1 // int

Ÿ abs(timedelta)

 

생성된 timedelta 객체를 이용하여 date, datetime 객체를 변경할 수 있습니다.

지원하는 연산은 아래와 같으며, 각 객체 간의 비교연산도 가능합니다.

Ÿ date_2 = date_1 + timedelta

Ÿ date_2 = date_1 - timedelta

Ÿ timedelta = date_2 - date_1

Ÿ datetime_2 = datetime_1 + timedelta

Ÿ datetime_2 = datetime_1 - timedelta

Ÿ timedelta = datetime_1 - datetime_2

xample - timedelta의 연산을 수행하는 예:

# 그 외 비교 연산

xample - date 객체와 관련된 연산의 예:

xample - datetime 객체와 관련된 연산의 예:

 

출처 : https://devanix.tistory.com/306