안녕하세요, Davey입니다. 오늘 포스팅할 내용은, 날짜, 시간 정보 구현을 위해서 사용할 time, datetime 모듈에 대한 내용입니다. 차근 차근 하나 하나 설명 드리도록 하겠습니다.
요즘에는 파이썬에 대한 포스팅을 상대적으로 많이 만드는 거 같습니다.오늘도 어김없이 파이썬 관련 포스팅을 작성하려고 있네요.
1. time.time() 함수 활용하기
: 일단 시간을 표현하는 모듈은 time 입니다. Time 안에는 time 함수를 가지고 있는데, time 함수를 호출하면 현재 시간을 출력을 하고, 시간대는 UTC(Universal Time Coordinated, 협정 세계시)로 호출이 됩니다. 그리고 실제로 실행을 해보면, 1970년 1월 1일 0시 0분 0초 이후에 얼마나 시간이 지났는지를 반환하게 됩니다. 간단하게 코드를 짜보면 아래와 같습니다.
import time
print(time.time())
- 처음에는 왜 이렇게 출력을 하지 라고 생각을 했습니다. 그냥 현재 시간의 Form을 맞춰서 출력하면 될 거 같은데 말이죠. 제가 말씀드리는 건 Default Format을 초반에 설정하면 좀 편하지 않을까하는 생각입니다.
- 그리고 첨언으로 말씀드리면, time 모듈은 운영 체제가 제공하는 다양한 시간 기능을 다루는 모듈입니다. 즉, 운영 체제마다 시간을 다루는 방식이 다르기 때문에 이 모듈의 함수들은 어떤 운영 체제에서 실행하느냐에 따라 결과가 다릅니다.
2. time.localtime() 함수 활용하기
: 그럼 경과된 시간을 출력하는 time 함수를 알아봤다면, 이것보다 좀 더 직관적인, 현지 시간을 출력하는 localtime 함수를 알아보도록 하겠습니다. localtime 함수를 사용하게 되면, time에서 반환한 값을 날짜와 시간 형태로 변환해줍니다. 특히 localtime이라는 이름 그대로 현재 지역의 시간대를 사용합니다.
- 우리나라에서 실행했다면(제가 있는 곳이 한국이니..) UTC에 9시간을 더한 KST(Korea Standard Time, 한국 표준시)를 사용합니다(UTC+09:00). 하지만, 저희가 보는 전자 시계의 형태는 아닌, 각 요소마다 하나씩 Value를 가지고 출력을 하게 됩니다. 위에 1번이랑 비교하시라고, Code 같이 실행하였습니다.
- 이건 그냥 TMI인데, localtime()안에 time.time() 함수를 기입했을 때와 하지 않을때의 값이 똑같이 출력이 됩니다. Default 값이 time.time()인거 같습니다.
import time
print(time.time()) # 1번에 설명드린 것과 비교하시라고 Code 추가
print(time.localtime()) # Local Time을 출력함 Case1 : time.time()을 삽입하지 않을 때
print(time.localtime(time.time())) # Local Time을 출력함 Case1 : time.time()을 삽입 할때
3. time.strftime() 함수 활용하기
: 위에 1,2번은 약간 사람을 배려하지 않은 형태의 Value 값을 출력했다면, 이제는 사람이 좀 더 쉽게 이해하고, 직관적으로 볼 수 있는 Format으로 출력하는 함수를 설명 드릴려고 합니다. 바로 time.strftime() 입니다. 간단한 예를 통해서 설명 드리도록 하겠습니다.
import time
print(time.strftime('%Y-%m-%d', time.localtime(time.time()))) # 연-월-일 Format
print(time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))) # 연-월-일-시-분-초 Format
print(time.strftime('%c', time.localtime(time.time()))) # International Style Format
- 위에 보여드린 format은 2가지이지만, 사용자의 편의를 위해서 수정하고, 다른 format으로 출력이 가능합니다. format 구성하실때 아래 표를 참고하시면 더 도움이 되실 겁니다.
No. | Code (코드) | Description(설명) | Example (예) |
1 | %a | 요일 줄임말 | Sun, Mon, ... Sat |
2 | %A | 요일 | Sunday, Monday, ..., Saturday |
3 | %w | 요일을 숫자로 표시, 월요일~일요일, 0~6 | 0, 1, ..., 6 |
4 | %d | 일 | 01, 02, ..., 31 |
5 | %b | 월 줄임말 | Jan, Feb, ..., Dec |
6 | %B | 월 | January, February, …, December |
7 | %m | 숫자 월 | 01, 02, ..., 12 |
8 | %y | 두 자릿수 연도 | 01, 02, ..., 99 |
9 | %Y | 네 자릿수 연도 | 0001, 0002, ..., 2017, 2018, 9999 |
10 | %H | 시간(24시간) | 00, 01, ..., 23 |
11 | %I | 시간(12시간) | 01, 02, ..., 12 |
12 | %p | AM, PM | AM, PM |
13 | %M | 분 | 00, 01, ..., 59 |
14 | %S | 초 | 00, 01, ..., 59 |
15 | %Z | 시간대 | 대한민국 표준시 |
16 | %j | 1월 1일부터 경과한 일수 | 001, 002, ..., 366 |
17 | %U | 1년중 주차, 월요일이 한 주의 시작으로 | 00, 01, ..., 53 |
18 | %W | 1년중 주차, 월요일이 한 주의 시작으로 | 00, 01, ..., 53 |
19 | %c | 날짜, 요일, 시간을 출력, 현재 시간대 기준 | Sat May 19 11:14:27 2018 |
20 | %x | 날짜를 출력, 현재 시간대 기준 | 05/19/18 |
21 | %X | 시간을 출력, 현재 시간대 기준 | '11:44:22' |
4. datetime().today() 함수 사용하기
: time() 모듈 사용에 대해서 설명을 드렸습니다. 그럼 이번에는 약간 비슷하지만 조금 다른 datatime() 모듈을 사용하려고 합니다. time() 모듈에는, time() 이라는 함수를 사용했다면, datatime() 모듈에서는 "today()" 라는 함수를 사용하도록 하겠습니다. 즉, 현재 시각을 출력하는 함수입니다. 약간 단어 자체는 time() 함수보다는 더 직관적인 거 같습니다. 아래 코드 블럭과 출력값 참조 부탁 드립니다.
import datetime
print(datetime.datetime.today())
5. datetime().datatime() 함수 사용하기
: datetime().today() 함수가 현재 시간을 출력하는 함수라면, datetime().datatime()는 사용자가 임의의 시간을 정하고 싶을 때 사용하는 함수라고 이해하시면 됩니다. 즉, 어떤 특정시간에 대한 schedue이나, 날짜 계산을 위해서 사용하는 함수라고 생각하시면 더 이해가 빠르실 거 같습니다. 아래 예제를 통해서 설명 드리도록 하겠습니다. 각 코드에 필요 시 주석 처리를 통해서 설명을 달았습니다. 참조 하세요!
import datetime
print(datetime.datetime.today()) # 현재 시간을 출력해 줌 (비교를 위해서 남겨둠)
today_date_test = datetime.datetime(2020, 12, 4) # today_date_test변수에 임의의 시간을 입력
print(today_date_test) # today_date_test변수에 입력한 임의의 시간을 출력
- 위에 입력한 임의의 날짜를 원하는 Format으로도 출력이 가능합니다. 위 3번에서 사용한 형태의 format 배열을 이용하시면 되는데요, 몇개의 예제를 아래에 보여 드리도록 하겠습니다.
import datetime
print(datetime.datetime.today()) # 현재 시간을 출력해 줌 (비교를 위해서 남겨둠)
today_date_test = datetime.datetime(2020, 12, 4) # today_date_test변수에 임의의 시간을 입력
print(today_date_test) # today_date_test변수에 입력한 임의의 시간을 출력
print(today_date_test.strftime('%Y-%m-%d')) # Format 1
print(today_date_test.strftime('%Y-%m-%d-%H')) # Format 2
print(today_date_test.strftime('%Y-%m-%d-%H-%M-%S')) # Format 3
6. datetime.timedelta() 함수 사용하기
: 위에 현지 시간 그리고 임의의 시간을 출력하는 함수를 설명을 드렸다면, 이번에는 이 시간을 사칙연사할 수 있는 함수를 설명 드릴려고 합니다. 어떤 기간을 출력하는 데 유용하게 사용될 거라고 생각합니다. 그럼 아래 예제를 통해서 설명 드리도록 하겠습니다.
import datetime
today_date_test = datetime.datetime(2020, 12, 4) # today_date_test변수에 임의의 시간을 입력
print(today_date_test) # today_date_test변수에 입력한 임의의 시간을 출력
# datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0,
# hours=0, weeks=0) 속성값 참조
result1 = today_date_test - datetime.timedelta(days=10) # 10 Days 이전 날짜를 result1에 입력
print(result1) # result1을 출력
이상입니다. 간단한 시간 출력하는 것도, 이렇게 속성 값, format 형태를 이해해야 하는 것도 약간의 숙제 아닌 숙제인 거 같습니다. 각 모듈에 대한 내용이 적힌 사이트에 접속을 하면, 사실, 예제가 없으면 이해하기가 그렇게 쉬운게 아닙니다. 그나마, 예제를 가지고 있는 "org" 사이트들은 이해하기 쉬운데, 그렇제 않은, Pyqt5 (오직 Variable 값만 나옴) 전문 사이트는 이해하기가 여간 어려운게 아닙니다. 그래도, 그나마, 구글이 있어서, 이것 저것 예제를 통해서 이해하는데는 정말 도움이 많이 되는 거 같습니다. 프로그래밍을 잘하려면, 정말 구글이랑 많이 친해져야 될 거 같습니다. 그럼 오늘도 수고 하셨습니다. 감사합니다.
제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.
[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]
'파이썬 (Python) > General' 카테고리의 다른 글
파이썬 - 함수 데코레이터(decorator), 클래스 데코레이터(decorator) (0) | 2021.03.05 |
---|---|
Python 파이썬 - Progress Bar 구현하기 + tqdm 모듈 이용하기 (0) | 2021.02.20 |
Python 파이썬 팩키지(Package), 모듈(Module)을 통해서, 나도 라이브러리(Library) 만들어 보자 (2) | 2021.02.17 |
Python 파이썬 re, ravel, flatten 함수를 이용해보기 (12) | 2021.02.15 |
if __name__ == '__main__' : 사용 용도 이해하고 활용하기 (4) | 2021.02.14 |
댓글