티스토리 뷰

Python

Python,module time [시간]

hwangyoungjae 2016. 5. 17. 13:54
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

-. 컴퓨터에서 시간을 표현하는 방법

용어

내용

타임스탬프

(Time Stamp)

컴퓨터에서 시간을 측정하는 방법으로 1970 1 1일 자정('epoch-중요한 사건'이라고 보통 영문에서 표현함)이후로 초 단위로 측정한 절대시간

이렇게 절대적인 시간을 용도에 맞도록 변환하여 사용함

협정세계시

(UTC, Universal Time Coordinated)

1972부터 시행된 국제표준시세슘원자의 진동수에 의거한 초의 길이가 기준이 됨

그리니치 평균시

(GMT, Greenwich Mean Time)

런던 그리니치 천문대의 자오선상에서의 평균 태양시, 1972년부터 협정세계시를 사용하지만동일한 표현으로 널리 쓰이고 있음

지방표준시

(LST, Local Standard Time)

UTC를 기준으로 경도 15도마다 1시간 차이가 발생하는 시간한국은 동경 135도를 기준으로 UTC보다 9시간 빠름

일광절약 시간제

(DTS, Daylight Saving Time)

흔히 서머타임으로 알고 있는것으로에너지절약 목적으로 시간을 한시간씩 앞당기거나 뒤로 미루는 제도

 

>> time module <<

컴퓨터는 타임스탬프를 이용하여 사람이 이해할수 있는 UTC, LST로 변환한다또한 한 시점의 시간을 사람이 이해하는 표현 방식으로 표기하기 위하여 ""와 같은 많은 정보가 필요하다그 때문에 파이썬에서는 이러한 한 시점의 시간을 표현하는 정보를 묶어서 struct_time 시퀸스 객체로 표현한다. struct_time객체의 모든 속성은 읽기전용이며시퀸스객체가 가지고 있는 속성은 아래와 같다.

속성

내용

tm_year

년도

tm_mon

(1~12)

tm_mday

(1~31)

tm_hour

(0~23)

tm_min

(0~59)

tm_sec

(0~61)

최대값이 61초인 이유는 윤초를 나타내기 위함

tm_wday

각 요일을 숫자로 나타냄

(:6, :0, :1, :2, :3, :4, :5)

tm_yday

1 1일부터 오늘까지 누적된 날짜(1~366)

tm_isdst

일광절약 시간제를 나타냄(0,1,-1)

※ 윤초 : 지구의 자전으로 인한 태양시와 원자시의 오차를 조정하기 위하여 가감하는 1

>>> import time

>>> t=time.localtime()

>>> t.tm_year

2013

>>> t.tm_mon

3

>>> t.tm_mday

29

 

>time 모듈내의 함수들

아래 예지는 import time 으로 time모듈을 로딩한후 작성되었다.

gmttime(),localtime(),asctime()은 호출시 인자가 명시적으로 전달되지 않는경우 현재 시스템의 타임스탬프값을 사용함.

-. time.time()

1970 1 1일 자정 이후로 누적된 초를 float단위로 반환

>>> time.time()

1364486237.873

 

-. time.sleep(secs)

현재 동작중인 프로세스를 주어진초만큼 일시정지함

print(time.localtime().tm_sec)

time.sleep(5)

print(time.localtime().tm_sec)

실행결과

48

53

 

-. time.gmtime([secs])

입력된 초를 변환하여, UTC기준의struct_time 시퀸스객체로 반환

인자가 입력되지 않은 경우, time()을 인자로 받음

>>> time.gmtime(1) #인자로 1초가 입력된경우(1970 1 1일 자정 + 1)

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0)

>>> time.gmtime() #입력된 인자가 없는경우 time()을 이용하여 GMT 반환

time.struct_time(tm_year=2013, tm_mon=3, tm_mday=28, tm_hour=16, tm_min=3, tm_sec=20, tm_wday=3, tm_yday=87, tm_isdst=0)

 

-. time.localtime([secs])

입력된 초를 변환하여, LST기준의 struct_time시퀸스객체 반환

인자가 입력되지 않은경우, time()을 인자로받음

>>> time.localtime(1)

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=9, tm_min=0, tm_sec=1, tm_wday=3, tm_yday=1, tm_isdst=0)

>>> time.localtime()

time.struct_time(tm_year=2013, tm_mon=3, tm_mday=29, tm_hour=1, tm_min=6, tm_sec=45, tm_wday=4, tm_yday=88, tm_isdst=0)

 

-. time.asctime([t])

struct_time시퀸스객체를 인자로 받아 ' Fri Mar 29 01:08:09 2013'과 같은 형태로 반환

인자가 입력되지 않은경우 현재시간을 인자로 받음

>>> time.asctime(time.localtime())

'Fri Mar 29 01:09:03 2013'

>>> time.asctime()

'Fri Mar 29 01:09:33 2013'

 

-. time.mktime(t)

지방표준시인 struct_time시퀸스객체를 인자로 받아서 time()과 같은 누적된 초를 반환함

>>> time.mktime(time.localtime())

1364487040.0

 

>> 사용자가 지정 날짜포맷 <<

asctime()함수와 같이 모듈에서 이미 지정된 형식이 아닌 사용자가 직접 포맷을 지정하여 struct_time객체를 출력하고 받아들이는 방법을 알아보도록 하겠다.

strftime()함수는 struct_time객체를 사용자가 정의한 형식으로 변경하여 문자열로 반환한다.

반대로 strptime()함수는 사용자가 정의한 형식문자열을 struct_time객체로 변환한다.

사용형식 : time.strftime(format[,t])

사용형식 : time.strptime(string[,format])

'format'에는 사용자가 정의한 형식 문자열이 오게 되며이때 형식지시자를 사용하여 struct_time객체의 값을 명시할수 있다.

두 함수 모두 공통된 형식 지시자를 사용한다.

지시자

내용

%y

연도를 축약하여 표시('13')

%Y

연도를 축약하지 않고 표시('2013')

%b

축약된 월이름('Mar')

%B

축약되지 않은 월 이름('March')

%m

숫자로 표현한 월(01~12)

%d

(01~31)

%H

24시를 기준 시(00~23)

%I(아이)

12시를 기준 시(01~12)

%M

(00~59)

%S

(00~61)

%p

오전(AM)/오후(PM) 표시 ('AM')

%a

축약된 요일 이름('Fri')

%A

축약되지 않은 요일이름('Friday')

%w

요일을 숫자로 표시

(:0, :1, :2, :3, :4, :5, :6)

%j

1 1일부터 누적된 날짜(001~366)

※ datetime모듈의 date클래스, time클래스, datetime클래스도 모두 strftime()메서드를 가지고 있으며형식지시자의 표기 방법이 모두 동일하다.

 

>strftime()메서드를 이용하여 날짜의 출력형식 지정하기

>>> strftime("%B %dth %A %I:%M",localtime())

'March 29th Friday 01:39'

>>> strftime("%Y-%m-%d %I:%M",localtime())

'2013-03-29 01:39'

>>> strftime("%B %dth %A %I:%M"#struct_time인자가 없는경우현시스템의 LST(localtime())를 기준으로 반환

'March 29th Friday 01:40'

>>> strftime("%Y-%m-%d %I:%M")

'2013-03-29 01:40'

 

>strptime()으로 지정된 형식문자열형태로 표현된 시간을 struct_time객체로 변환

>>> import time

>>> timestring=time.ctime(1234567890) #'Sat Feb 14 08:31:30 2009' 형태

>>> time.strptime(timestring) #형식지 지정되지 않은경우, '%a %b %d %H:%M:%S %Y '포맷으로 설정

time.struct_time(tm_year=2009, tm_mon=2, tm_mday=14, tm_hour=8, tm_min=31, tm_sec=30, tm_wday=5, tm_yday=45, tm_isdst=-1)

>>> time.strptime(timestring,"%a %b %d %H:%M:%S %Y")

time.struct_time(tm_year=2009, tm_mon=2, tm_mday=14, tm_hour=8, tm_min=31, tm_sec=30, tm_wday=5, tm_yday=45, tm_isdst=-1)

>>> timestring=time.strftime("%B %dth %A %I:%M")

>>> time.strptime(timestring,"%B %dth %A %I:%M")

time.struct_time(tm_year=1900, tm_mon=3, tm_mday=29, tm_hour=1, tm_min=45, tm_sec=0, tm_wday=4, tm_yday=88, tm_isdst=-1)

>>> time.strptime(timestring) #입력된 문자열과 형식이 일치하지 않는경우

Traceback (most recent call last):

  File "<pyshell#250>", line 1, in <module>

    time.strptime(timestring)

  File "C:\Python32\lib\_strptime.py", line 482, in _strptime_time

    tt = _strptime(data_string, format)[0]

  File "C:\Python32\lib\_strptime.py", line 337, in _strptime

    (data_string, format))

ValueError: time data 'March 29th Friday 01:45' does not match format '%a %b %d %H:%M:%S %Y'

 

 

※ time.localtime().tm_wday의 값과 time.strftime('%w')는 같은요일이라 하더라도 표시형식이 다르기때문에 값이 다르게 나타난다.

>>> import time

>>> today=time.localtime()

>>> today.tm_wday

4

>>> time.strftime('%A %w',today)

'Friday 5'

헷갈리지 않도록 주의해야겠다.

 

참조 : 빠르게 활용하는 파이썬프로그래밍

'Python' 카테고리의 다른 글

Python,module math [수학]  (0) 2016.05.17
Python,module datetime [날짜시간]  (0) 2016.05.17
Python, pickle  (0) 2016.05.17
Python, 모듈 사용하기  (0) 2016.05.17
Python, 클래스(Class) - 상속  (0) 2016.05.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함