Python - 날짜와 시간

안녕하세요, 미래의 Python 마법사들! 오늘은 Python에서 날짜와 시간의 왕국을 탐험하는 흥미로운 여정을 떠날 거예요. 여러분의 친절한 이웃 컴퓨터 교사로서, 이 모험을 안내해 드리게 되어 기쁩니다. 그럼, 가상의 지팡이(키보드)를 장착하고, 함께 빠져들어봅시다!

Python - Date & Time

틱 인터벌이란?

날짜와 시간을 살펴보기 전에, 기본적인 개념인 틱 인터벌에 대해 이해해야 합니다. 컴퓨터의 세상에서 시간은 종종 틱으로 측정됩니다. 그런데 틱이 정확히 무엇인가요?

틱은 여러분의 컴퓨터의 심장 박동과 같습니다. 이는 컴퓨터의 시간을 측정할 수 있는 가장 작은 시간 단위입니다. Python에서는 틱을 1970년 1월 1일 00:00:00 UTC부터 지난 초 수로 측정합니다. 이 시점은 종종 "에포크"라고 불립니다.

현재 틱 값을 어떻게 가져올 수 있는지 보겠습니다:

import time

ticks = time.time()
print("현재 틱 값:", ticks)

이 코드를 실행하면 큰 숫자가 출력될 텐데, 이는 에포크 이후 지난 초 수입니다. 정말 멋질 것 아닙니까?

TimeTuple이란?

이제 TimeTuple에 대해 이야기해봅시다. 새로운 춤보다는 (비록 춤의 이름처럼 들립니다만!), Python이 시간을 표현하는 방법으로 더 많은 것입니다.

TimeTuple은 시간의 다양한 측면을 나타내는 9개의 요소로 구성된 튜플입니다:

인덱스 속성
0 연도 (예: 2023)
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 DST -1, 0, 1 (일광 절약 시간 플래그)

이것이 너무 많이 먹먹할 것 같다고 걱정하지 마세요. 이 요소들을 우리의 수업에서 사용하며, 곧 익숙해질 거예요!

현재 시간 가져오기

간단한 것부터 시작해볼까요? 현재 시간을 가져오는 것입니다. Python에서는 time 모듈을 사용하면 매우 쉽게 할 수 있습니다:

import time

current_time = time.localtime()
print("현재 시간:", current_time)

이를 실행하면 TimeTuple이 출력됩니다. 각 숫자는 우리가 방금 본 표의 요소에 해당합니다. 예를 들어, time.struct_time(tm_year=2023, tm_mon=6, tm_mday=15, tm_hour=14, tm_min=30, tm_sec=0, tm_wday=3, tm_yday=166, tm_isdst=0)라고 출력되면, 이는 2023년 6월 15일 오후 2시 30분을 의미합니다.

포맷된 시간 가져오기

TimeTuple은 컴퓨터에게는 유용하지만, 인간에게는 매우 불편합니다. 시간을 더 읽기 쉽게 포맷化해보겠습니다:

import time

formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print("포맷된 시간:", formatted_time)

이는 "2023-06-15 14:30:00"과 같은 형식으로 무엇인가를 인쇄할 것입니다. 훨씬 나은 것 아닙니까? %Y, %m, %d 등은 Python에 시간 요소를 어떻게 배치할지 알려주는 포맷 코드입니다. Python에 시간을 어떻게 보고 싶은지 주는 템플릿 같은 것입니다.

월별 캘린더 가져오기

이제 좀 더 한 단계 나아가, 한 달의 캘린더를 인쇄해보겠습니다. 이를 위해 calendar 모듈을 사용합니다:

import calendar

year = 2023
month = 6

print(calendar.month(year, month))

이는 2023년 6월의 아주 깔끔하게 포맷된 캘린더를 인쇄합니다. Python 프로그램 안에 작은 데스크 캘린더를 가지는 것과 같아요!

time 모듈

이미 time 모듈을 조금 사용했지만, 더 깊이 탐구해보겠습니다. 이 모듈은 다양한 시간 관련 함수를 제공합니다. 여기 몇 가지 유용한 함수가 있습니다:

import time

print("에포크 이후 지난 초:", time.time())
print("현재 로컬 시간:", time.ctime())
print("2초간 잠자리...")
time.sleep(2)
print("깨어나서!")

sleep() 함수는 프로그램을 잠시 멈추고 싶을 때 매우 유용합니다. 코드에게 빠른 잠자리를 잔다는 것 같아요!

calendar 모듈

한 달을 인쇄하는 것보다 calendar 모듈은 더 많은 것을 할 수 있습니다:

import calendar

print("2023년은 윤년입니까?", calendar.isleap(2023))
print("2000년과 2050년 사이 윤년 수는 몇 개입니까?", calendar.leapdays(2000, 2050))
print("2023-06-15는 주의 어떤 날입니까?", calendar.weekday(2023, 6, 15))

이 함수들은 캘린더와 날짜를 쉽게 작업할 수 있게 해줍니다. 더 이상 손가락으로 윤년을 세 필요가 없어요!

Python datetime 모듈

datetime 모듈은 Python에서 시간 조작의 스위스 Army 톱니칼입니다. timecalendar 모듈의 기능을 결합하고, 더 많은 기능을 추가합니다.

from datetime import datetime, date, time

# 현재 날짜와 시간
now = datetime.now()
print("현재 날짜와 시간:", now)

# 특정 날짜 생성
my_birthday = date(1990, 5, 15)
print("제 생일:", my_birthday)

# 특정 시간 생성
alarm = time(7, 30, 0)
print("알람 시간:", alarm)

datetime를 사용하면 날짜와 시간을 쉽게 생성, 조작 및 포맷화할 수 있습니다.

Python date 객체

datetime 모듈의 date 객체는 날짜(연도, 월, 일)로 작업할 수 있게 해줍니다:

from datetime import date

today = date.today()
print("오늘의 날짜:", today)
print("연도:", today.year)
print("월:", today.month)
print("일:", today.day)

이는 오늘의 날짜를 알고, 그 날에 대해 모든 것을 말할 수 있는 스마트 캘린더 같아요!

Python time 객체

마찬가지로, time 객체는 시간(시, 분, 초, 마이크로초)로 작업할 수 있게 해줍니다:

from datetime import time

lunch_time = time(12, 30, 0)
print("점심 시간:", lunch_time)
print("시:", lunch_time.hour)
print("분:", lunch_time.minute)
print("초:", lunch_time.second)

이제 코딩 휴식을 정확하게 예약할 수 있습니다!

Python datetime 객체

datetime 객체는 datetime을 결합하여, 두 가지 모두에 대한 통제를 제공합니다:

from datetime import datetime

now = datetime.now()
print("현재 날짜와 시간:", now)
print("현재 연도:", now.year)
print("현재 월:", now.month)
print("현재 일:", now.day)
print("현재 시:", now.hour)
print("현재 분:", now.minute)
print("현재 초:", now.second)

이는 현재 순간에 대해 모든 것을 아는 슈퍼 파워드 워치 같아요!

Python timedelta 객체

마지막으로, timedelta에 대해 이야기해봅시다. 이 객체는 시간의 기간을 나타내며, 날짜 계산에 매우 유용합니다:

from datetime import datetime, timedelta

now = datetime.now()
print("현재 날짜와 시간:", now)

# 1일 더하기
tomorrow = now + timedelta(days=1)
print("내일 이 시간:", tomorrow)

# 1주 빼기
last_week = now - timedelta(weeks=1)
print("지난 주 이 시간:", last_week)

timedelta를 사용하면 코드에서 미래와 과거의 날짜를 쉽게 계산할 수 있어요! 정말 많은 응용 프로그램에 유용합니다.

그리고 이렇게 끝났습니다, 제 젊은 Python 마법사들! 우리는 Python에서 날짜와 시간의 흥미로운 세계를 탐험했습니다. 기억하세요, 연습이 나쁜 선생님 없다는 말이 있습니다. 이 개념들을 실험해 보세요. 알고보면, 진짜 코딩 시간 루드로서 시간을 조작할 준비가 되어 있을 거예요!

Credits: Image by storyset