5장: 날짜와 시간

파이썬에서는 날짜와 시간을 다루기 위해 다양한 모듈과 함수를 제공합니다. 이 장에서는 파이썬의 `datetime` 모듈을 사용하여 날짜와 시간을 처리하는 방법에 대해 알아보겠습니다.


#### 5.1 기본 datetime 객체 사용


`datetime` 모듈을 사용하여 현재 날짜와 시간을 얻을 수 있습니다. `datetime.datetime.now()` 함수는 현재 날짜와 시간을 반환합니다.


```python

import datetime


# 현재 날짜와 시간

now = datetime.datetime.now()

print(now)  # 출력 예시: 2024-05-30 14:35:45.123456

```


#### 5.2 날짜와 시간의 포맷팅


`strftime` 메서드를 사용하여 날짜와 시간을 원하는 형식으로 포맷팅할 수 있습니다. 포맷 코드의 예시는 다음과 같습니다:

- `%Y`: 4자리 연도

- `%m`: 2자리 월

- `%d`: 2자리 일

- `%H`: 2자리 시간(24시간 형식)

- `%M`: 2자리 분

- `%S`: 2자리 초


```python

# 날짜와 시간 포맷팅

formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")

print(formatted_date)  # 출력 예시: 2024-05-30 14:35:45

```


#### 5.3 문자열을 datetime 객체로 파싱하기


`strptime` 메서드를 사용하여 문자열을 `datetime` 객체로 변환할 수 있습니다. 이때, 문자열의 형식과 일치하는 포맷 코드를 제공해야 합니다.


```python

date_string = "2024-05-30 14:35:45"

date_object = datetime.datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")

print(date_object)  # 출력: 2024-05-30 14:35:45

```


#### 5.4 날짜와 시간의 차이 계산


두 `datetime` 객체 간의 차이를 계산할 수 있으며, 결과는 `timedelta` 객체로 반환됩니다.


```python

# 두 날짜 간의 차이 계산

start_date = datetime.datetime(2024, 1, 1)

end_date = datetime.datetime(2024, 12, 31)

difference = end_date - start_date

print(difference)  # 출력: 364 days, 0:00:00

```


#### 5.5 시간대 전환


`pytz` 모듈을 사용하여 시간대를 처리할 수 있습니다. `pytz` 모듈을 설치하려면 다음 명령을 사용합니다:


```sh

pip install pytz

```


`pytz` 모듈을 사용하여 시간대를 지정하고, `astimezone` 메서드를 사용하여 시간대를 변환할 수 있습니다.


```python

import pytz


# 시간대 설정

timezone = pytz.timezone("Asia/Seoul")

localized_date = timezone.localize(now)

print(localized_date)  # 출력 예시: 2024-05-30 14:35:45+09:00


# 다른 시간대로 변환

new_timezone = pytz.timezone("America/New_York")

new_timezone_date = localized_date.astimezone(new_timezone)

print(new_timezone_date)  # 출력 예시: 2024-05-30 01:35:45-04:00

```


#### 5.6 날짜 산술


`timedelta` 객체를 사용하여 날짜에 특정 기간을 더하거나 뺄 수 있습니다.


```python

# 날짜에 10일 더하기

future_date = now + datetime.timedelta(days=10)

print(future_date)  # 출력 예시: 2024-06-09 14:35:45.123456


# 날짜에서 5일 빼기

past_date = now - datetime.timedelta(days=5)

print(past_date)  # 출력 예시: 2024-05-25 14:35:45.123456

```


#### 5.7 유닉스 타임스탬프 변환


유닉스 타임스탬프는 1970년 1월 1일 00:00:00 UTC 이후의 초를 나타냅니다. `datetime` 모듈을 사용하여 타임스탬프를 `datetime` 객체로 변환할 수 있습니다.


```python

# 유닉스 타임스탬프를 datetime 객체로 변환

timestamp = 1596278400

date_from_timestamp = datetime.datetime.fromtimestamp(timestamp)

print(date_from_timestamp)  # 출력: 2020-08-01 00:00:00

```


이상으로, 파이썬에서 날짜와 시간을 처리하는 방법에 대해 알아보았습니다. 다음 장에서는 파일 입출력에 대해 더 자세히 알아보겠습니다. 질문이나 요청사항이 있으시면 댓글로 남겨주세요!


---


이 글의 내용은 GoalKicker.com의 Python Notes for Professionals 책을 참조하였습니다.

댓글