티스토리 뷰
-. 컴퓨터에서 시간을 표현하는 방법
용어 | 내용 |
타임스탬프 (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' |
헷갈리지 않도록 주의해야겠다.
참조 : 빠르게 활용하는 파이썬3 프로그래밍
'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
- Java
- activebackground
- onetomany
- FetchType
- vba
- highlightthickness
- 상수
- Module
- fetch join
- Excel
- apache
- highlightbackground
- 파이썬
- checkbutton
- command
- JPA
- indicatoron
- Composite Key
- activeforeground
- ManyToOne
- borderwidth
- Linux
- tkinter
- Python
- 리눅스
- IdClass
- disabledforeground
- 폼
- tkinter command & bind [명령어묶기와 사건묶기] Python
- Private
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |