파이썬에서 날짜 조작하기
이 글은 파이썬에서 날짜를 다루는 방법을 설명합니다.
YouTube Video
파이썬에서 날짜 조작하기
파이썬에서 날짜 조작은 주로 datetime
모듈을 사용합니다. 이 모듈은 날짜와 시간을 조작할 수 있는 다양한 클래스와 함수를 제공합니다.
아래는 datetime
모듈을 사용한 기본 날짜 조작 예제입니다.
날짜 및 시간 가져오기
다음과 같이 현재 날짜와 시간을 얻을 수 있습니다. datetime.now()
와 datetime.today()
는 거의 동일한 결과를 반환하지만, 시간대(time zone)의 처리 방식에 차이가 있을 수 있습니다.
1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
- 이 코드는 현재 날짜와 시간, 그리고 오늘 날짜만을 가져와서 출력합니다.
특정 날짜 및 시간 생성하기
다음과 같이 특정 날짜와 시간을 생성할 수 있습니다.
1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
- 이 코드는 지정한 날짜와 시간(2023년 11월 7일 10:30:45)을 생성하여 출력합니다.
날짜 포맷팅
날짜 서식 지정은 다음과 같이 할 수 있습니다.
1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
- 이 코드는 현재 날짜와 시간을 가져와
strftime
을 사용해 지정한 형식으로 변환하여 출력합니다.
날짜 포맷 문자열
%Y
: 연도 (4자리 수)%m
: 월 (01에서 12)%d
: 일 (01에서 31)%H
: 시간 (00에서 23)%M
: 분 (00에서 59)%S
: 초 (00에서 59)
날짜 문자열 파싱
날짜를 나타내는 문자열을 datetime
객체로 변환할 수 있습니다.
1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
- 이 코드는 문자열로 된 날짜를
strptime()
을 사용하여datetime
객체로 변환하고 출력합니다.
날짜 연산
날짜 계산은 다음과 같이 할 수 있습니다.
1from datetime import datetime, timedelta
2
3now = datetime.now()
4
5# Date for one day later
6tomorrow = now + timedelta(days=1)
7print(f"Date for one day later: {tomorrow}")
8
9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
- 이 코드는
timedelta
를 사용하여 현재 날짜와 시간에서 일(day)과 시간(hour)을 더하거나 빼서 내일, 일주일 전, 두 시간 후의 날짜와 시간을 계산하고 출력합니다.
시간대 처리
datetime
모듈로도 시간대 처리가 가능합니다.
1from datetime import datetime, timezone, timedelta
2
3# Current UTC time
4utc_now = datetime.now(timezone.utc)
5print(f"Current UTC time: {utc_now}")
6
7# JST (UTC+9)
8jst = timezone(timedelta(hours=9))
9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
datetime
은 기본적으로 'naive datetime'(시간대 정보가 없는 객체)을 반환합니다.timezone
클래스나zoneinfo
를 사용해 시간대를 명시적으로 처리할 수 있습니다.
date 클래스와 time 클래스
datetime
모듈로 날짜만 혹은 시간만도 다룰 수 있습니다.
1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
date
클래스는 날짜만을,time
클래스는 시간만을 다룹니다.
datetime
과 timestamp
간의 변환
UNIX 타임스탬프와 datetime
객체 간의 변환이 가능합니다. 여기서 UNIX 타임스탬프는 1970년 1월 1일 이후 경과한 초(second) 단위의 값을 의미합니다.
1from datetime import datetime
2
3now = datetime.now()
4
5# datetime → timestamp
6timestamp = now.timestamp()
7print(f"Timestamp: {timestamp}")
8
9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
- 이 코드는 현재 날짜와 시간을 UNIX 타임스탬프로 변환한 뒤,
fromtimestamp()
함수를 사용해 다시datetime
객체로 변환합니다.
자주 하는 실수
datetime
모듈을 사용할 때는 다음 사항에 유의해야 합니다.
datetime.now()
는 시간대를 고려하지 않으므로 국제화 시에는timezone.utc
를 명시적으로 사용해야 합니다.- 포맷 문자열에서
%m
(월)과%M
(분)을 혼동하지 않도록 주의하세요.
요약
datetime
모듈은 유연한 날짜 및 시간 조작을 위한 많은 기능도 제공합니다. 또한, 특정 작업을 위한 date
, time
, timedelta
와 같은 클래스도 이용할 수 있습니다.
다른 라이브러리를 사용하면 더 고급스러운 날짜 조작이 가능합니다. 예를 들어, pandas
는 시계열 데이터를 처리하는 데 특화되어 있고, dateutil
은 복잡한 날짜 파싱에 적합합니다. 또한, arrow
라이브러리도 유용합니다.
위의 기사를 보면서 Visual Studio Code를 사용해 우리 유튜브 채널에서 함께 따라할 수 있습니다. 유튜브 채널도 확인해 주세요.