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

파이썬 날짜와 시간 마스터하기: 실전 가이드

이전 페이지 다음 페이지  

파이썬 프로그램은 여러 방식으로 날짜와 시간을 다룰 수 있습니다. 날짜 형식 간 변환은 컴퓨터의 일반적인 작업입니다. 파이썬의 time과 calendar 모듈이 날짜와 시간 추적을 돕습니다.

틱(Tick)이란?

시간 간격은 초 단위의 부동소수점 숫자입니다. 특정 시점은 1970년 1월 1일 00:00:00(epoch) 이후 초 단위로 표현됩니다.

파이썬에는 시간을 다루고 표현 간 변환을 위한 함수를 제공하는 인기 있는 time 모듈이 있습니다. 함수 time.time()은 1970년 1월 1일 00:00:00(epoch) 이후 현재 시스템 시간을 틱 단위로 반환합니다.

예제

Live Demo
#!/usr/bin/python
import time
ticks = time.time()
print "Number of ticks since 12:00am, January 1, 1970:", ticks

다음과 유사한 결과가 생성됩니다.

Number of ticks since 12:00am, January 1, 1970: 7186862.73399

틱을 사용하면 날짜 연산이 쉽습니다. 그러나 epoch 이전 날짜는 이 형태로 표현할 수 없습니다. 먼 미래의 날짜도 이 방식으로 표현할 수 없으며, 유닉스와 윈도우에서 컷오프 포인트는 2038년경입니다.

TimeTuple이란?

파이썬의 많은 시간 함수는 아래와 같이 9개 숫자의 튜플로 시간을 다룹니다.

인덱스필드값
04자리 연도2008
1월1~12
2일1~31
3시0~23
4분0~59
5초0~61(60 또는 61은 윤초)
6요일0~6(0은 월요일)
7일년 중 일수1~366(율리우스 일)
8일광 절약-1, 0, 1, -1은 라이브러리가 DST 결정

위 튜플은 struct_time 구조체와 동등합니다. 이 구조체는 다음 속성을 가집니다.

인덱스속성값
0tm_year2008
1tm_mon1~12
2tm_mday1~31
3tm_hour0~23
4tm_min0~59
5tm_sec0~61(60 또는 61은 윤초)
6tm_wday0~6(0은 월요일)
7tm_yday1~366(율리우스 일)
8tm_isdst-1, 0, 1, -1은 라이브러리가 DST 결정

현재 시간 얻기

epoch 이후 초 부동소수점 값을 time-tuple로 변환하려면 부동소수점 값을 함수(예: localtime)에 전달하여 모든 9개 항목이 유효한 time-tuple을 반환받으세요.

Live Demo
#!/usr/bin/python
import time
localtime = time.localtime(time.time())
print "Local current time :", localtime

다음과 같은 결과가 생성되며, 다른 표현 형식으로 포맷할 수 있습니다.

Local current time : time.struct_time(tm_year=2013, tm_mon=7, tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)

포맷된 시간 얻기

요구사항에 따라 시간을 포맷할 수 있지만, 읽기 쉬운 형식으로 시간을 얻는 간단한 방법은 asctime()입니다.

Live Demo
#!/usr/bin/python
import time
localtime = time.asctime(time.localtime(time.time()))
print "Local current time :", localtime

다음 결과가 생성됩니다.

Local current time : Tue Jan 13 10:17:09 2009

월 달력 얻기

calendar 모듈은 연간 및 월간 달력을 다룰 수 있는 다양한 메서드를 제공합니다. 여기서는 주어진 달(2008년 1월)의 달력을 출력합니다.

Live Demo
#!/usr/bin/python
import calendar
cal = calendar.month(2008, 1)
print "Here is the calendar:"
print cal

다음 결과가 생성됩니다.

Here is the calendar:
January 2008
Mo Tu We Th Fr Sa Su
       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

time 모듈

시간 작업과 표현 간 변환을 위한 함수를 제공하는 인기 있는 time 모듈이 파이썬에 있습니다. 사용 가능한 모든 메서드 목록은 다음과 같습니다.

번호함수 및 설명
1time.altzone

현지 DST 타임존의 오프셋(UTC 서쪽 방향 초 단위), 정의된 경우. 현지 DST 타임존이 UTC 동쪽(서유럽, 영국 포함)이면 음수. daylight가 0이 아닌 경우에만 사용.

2time.asctime([tupletime])

time-tuple을 받아 'Tue Dec 11 18:07:14 2008' 같은 읽기 쉬운 24자 문자열 반환.

3time.clock()

현재 CPU 시간을 부동소수점 초 단위로 반환. 계산 비용 측정에 time.clock이 time.time()보다 유용.

4time.ctime([secs])

asctime(localtime(secs))와 유사, 인수 없으면 asctime()과 동일.

5time.gmtime([secs])

epoch 이후 초로 표현된 시점을 받아 UTC 시간의 time-tuple t 반환. t.tm_isdst는 항상 0.

6time.localtime([secs])

epoch 이후 초로 표현된 시점을 받아 현지 시간의 time-tuple t 반환(t.tm_isdst는 현지 규칙에 따라 0 또는 1).

7time.mktime(tupletime)

현지 시간으로 표현된 time-tuple을 받아 epoch 이후 초로 표현된 부동소수점 값 반환.

8time.sleep(secs)

호출 스레드를 secs 초 동안 일시 중지.

9time.strftime(fmt[,tupletime])

현지 시간의 time-tuple을 받아 문자열 fmt로 지정된 형식의 문자열 반환.

10time.strptime(str, fmt='%a %b %d %H:%M:%S %Y')

문자열 str을 형식 문자열 fmt에 따라 파싱하여 time-tuple 형식의 시점 반환.

11time.time()

현재 시간 시점, epoch 이후 부동소수점 초 반환.

12time.tzset()

라이브러리 루틴이 사용하는 시간 변환 규칙 재설정. 환경 변수 TZ가 이 작업 방식을 지정.

함수들을 간단히 살펴보겠습니다.

time 모듈에는 다음 두 가지 중요한 속성이 있습니다.

번호속성 및 설명
1

time.timezone

속성 time.timezone은 현지 타임존(DST 제외)이 UTC로부터 떨어진 오프셋(초 단위)(아메리카는 >0, 유럽/아시아/아프리카 대부분은 <=0).

2

time.tzname

속성 time.tzname은 로케일 의존적인 문자열 쌍으로, DST 없는 현지 타임존 이름과 DST 있는 현지 타임존 이름.

calendar 모듈

calendar 모듈은 주어진 월이나 연도의 텍스트 달력 출력을 포함한 달력 관련 함수를 제공합니다.

기본적으로 calendar는 월요일을 주의 첫째 날, 일요일을 마지막 날로 간주합니다. 이를 변경하려면 calendar.setfirstweekday() 함수를 호출하세요.

calendar 모듈에서 사용 가능한 함수 목록은 다음과 같습니다.

번호함수 및 설명
1

calendar.calendar(year, w=2, l=1, c=6)

연도 year의 달력을 세 열로, c 공백으로 구분하여 다중 줄 문자열 반환. w는 각 날짜의 문자 너비, 각 줄 길이는 21*w+18+2*c. l은 주당 줄 수.

2

calendar.firstweekday()

각 주를 시작하는 요일의 현재 설정 반환. calendar 처음 임포트 시 기본값은 0(월요일).

3

calendar.isleap(year)

year가 윤년이면 True, 아니면 False 반환.

4

calendar.leapdays(y1, y2)

range(y1, y2) 내 연도들의 총 윤일 수 반환.

5

calendar.month(year, month, w=2, l=1)

연도 year의 month 월 달력을 주당 한 줄 + 헤더 두 줄로 다중 줄 문자열 반환. w는 각 날짜의 문자 너비, 각 줄 길이는 7*w+6. l은 주당 줄 수.

6

calendar.monthcalendar(year, month)

정수 리스트의 리스트 반환. 각 서브리스트는 한 주. month 월 외 날짜는 0, 월 내 날짜는 일자(1부터).

7

calendar.monthrange(year, month)

두 정수 반환. 첫째: 연도 year의 month 월 첫 날 요일 코드, 둘째: 그 달의 일수. 요일 코드 0(월요일)~6(일요일), 월 번호 1~12.

8

calendar.prcal(year, w=2, l=1, c=6)

print calendar.calendar(year, w, l, c)와 동일.

9

calendar.prmonth(year, month, w=2, l=1)

print calendar.month(year, month, w, l)와 동일.

10

calendar.setfirstweekday(weekday)

각 주의 첫째 날을 weekday 코드로 설정. 요일 코드 0(월요일)~6(일요일).

11

calendar.timegm(tupletime)

time.gmtime의 역함수: time-tuple 형태의 시간 시점을 받아 epoch 이후 부동소수점 초로 동일 시점 반환.

12

calendar.weekday(year, month, day)

주어진 날짜의 요일 코드 반환. 요일 코드 0(월요일)~6(일요일), 월 번호 1(1월)~12(12월).

기타 모듈 및 함수

관심 있으시다면 파이썬에서 날짜/시간을 다루는 다른 중요한 모듈과 함수 목록입니다.

python

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