Python에서 ISO 8601 날짜 구문 분석

Olorunfemi Akinlua 2023년6월21일
  1. ISO 8601 날짜의 구조
  2. strptime()strtime()을 사용하여 Python에서 ISO 8601 날짜 구문 분석
  3. Python에서 fromisoformat()을 사용하여 ISO 8601 날짜 구문 분석
  4. dateutil을 사용하여 Python에서 ISO 8601 날짜 구문 분석
Python에서 ISO 8601 날짜 구문 분석

날짜는 모든 사람에게 중요하며 우리가 사용하는 많은 응용 프로그램에 중요합니다. 개발자로서 서로 다른 표준 시간대 또는 존재하고 이를 중심으로 작업하는 시간 개체와 약간 혼란스러울 수 있습니다.

그러나 작업을 더 쉽게 만드는 표준이 종종 존재하며 이것이 이 문서에서 수반하는 것입니다. 또한 일반적인 ISO 8601 날짜의 구조에 대해 설명하고 일반적인 DateTime 개체를 어디에서나 사용할 수 있는 표준화된 DateTime으로 구문 분석하는 방법을 보여줍니다.

ISO 8601 날짜의 구조

[ISO](International Organization for Standardization)는 종종 기술 및 비기술 영역을 포함하는 다양한 분야에 걸쳐 회원국을 위한 표준화 작업을 수행합니다. 엔지니어링과 같은 영역은 우선 순위의 일부입니다.

수많은 표준화에는 월, 일, 시, 분, 초 및 밀리초로 표시되는 ISO 8601 DateTime이 포함됩니다. 모든 데이터에 대해 전 세계적으로 DateTime 표준으로 사용되며 시간 기반이므로 허위 진술 및 오류를 방지하는 데 도움이 됩니다.

전 세계적으로 사용되는 Python 애플리케이션을 빌드하려는 경우 ISO 8601 DateTime 개체를 이해하는 것이 중요하며 이를 파싱하는 것이 요구 사항일 수 있습니다.

ISO 8601 datetime은 왼쪽에서 시작하여 밀리초 매개변수로 끝나는 연도로 표시되며 종종 T에서 Z까지의 다른 컴퓨터 문자와 결합됩니다.

2022-08-10 17:00:00.000

위의 ISO DateTime 객체는 2022년 8월 11일 오후 5시를 나타냅니다. 현지 시간대 내.

ISO 8601 DateTime 문자열에는 날짜 섹션이 필요하지만 시간 섹션은 선택 사항임을 명시하는 것이 중요합니다. 그것들은 ISO 8601의 다른 변형이지만 위의 내용은 이 문서의 참조입니다.

strptime()strtime()을 사용하여 Python에서 ISO 8601 날짜 구문 분석

Python에는 다양한 작업에 유용한 다양한 모듈이 사전 설치되어 제공되며 사전 설치된 모듈 중 하나는 날짜 및 시간 작업에 도움이 되는 datetime입니다. datetime 모듈을 사용하면 datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]]) 값을 얻을 수 있습니다.

now() 메서드는 현재 날짜와 시간을 가져오고 개발하는 데 도움이 되며 필요한 정보를 얻기 위해 조작하거나 구문 분석할 수 있는 일반적인 DateTime 개체를 제공합니다.

from datetime import datetime

todaysDate = datetime.now()

print(todaysDate)

출력:

2022-09-28 06:55:56.832983

또한 today() 메서드를 사용하여 동일한 값을 얻을 수 있습니다. 하지만 now() 메서드가 today() 메서드보다 선호됩니다.

AnoTodaysDate = datetime.today()

출력:

2022-09-29 10:48:43.311880

이전에는 일반적인 Python DateTime 개체를 표준화된 ISO 6801 DateTime으로 구문 분석했습니다. Python DateTime 개체로 ISO 6801 DateTime을 생성하여 이를 반대로 해 보겠습니다.

이를 달성하려면 DateTime 객체를 문자열 표현(이번에는 ISO 6801 DateTime 문자열)으로 변환하는 데 도움이 되는 strftime() 메서드가 필요합니다.

from datetime import datetime

todaysDate = datetime.now()
todaysDateInISO = todaysDate.strftime("%Y-%m-%dT%H:%M:%S.%f%z")

print(todaysDateInISO)

출력:

2022-09-29T11:08:29.413183

todaysDate 바인딩은 현재 날짜 및 시간에 대한 Python DateTime 객체를 보유하고 있으며 바인딩을 strftime() 메서드에 인수로 전달하여 동등한 ISO 8601 DateTime 문자열을 생성합니다.

이제 ISO 8601 DateTime 문자열을 Python DateTime 객체로 어떻게 변환합니까? 우리는 strftime() 메서드의 반대인 strptime() 메서드가 필요합니다.

이 메서드는 DateTime 문자열에서 DateTime 개체를 만듭니다.

따라서 ISO 6801 DateTime 문자열을 strptime()의 첫 번째 인수로 전달하고 원하는 날짜 형식을 정의하는 또 다른 인수인 Python DateTime 객체 %Y-%m-%dT%H:%M을 전달합니다. :%SZ.

parsedDate = datetime.strptime("2022-03-04T21:08:12Z", "%Y-%m-%dT%H:%M:%SZ")
print(parsedDate)

출력:

2022-03-04 21:08:12

Y-%m-%dT%H:%M:%SZ 날짜 형식은 Python DateTime 개체 내에 지정된 형식 코드를 사용하여 년, 월, 일, 시, 분 및 초를 처리합니다.

Python에서 fromisoformat()을 사용하여 ISO 8601 날짜 구문 분석

strftime()strptime() 메서드와 유사하게 ISO 6801 DateTime 문자열을 생성하거나 Python DateTime 객체로 변환할 수 있는 전용 메서드가 있습니다. isoformat() 메서드는 YYYY-MM-DD HH:MM:SS.mmmmmm 형식으로 처리되는 ISO에 따라 형식이 지정된 시간을 반환하는 데 도움이 됩니다.

그리고 더 중요한 것은 fromisoformat() 메소드가 ISO 8601 DateTime 문자열을 사용하여 이에 상응하는 Python DateTime 객체를 반환한다는 것입니다.

Python DateTime 객체에서 ISO 8601을 생성하려면 먼저 now() 메서드를 사용하여 DateTime 객체를 생성하고 isoformat()을 사용하여 결과의 ISO 8601 속성(형식)을 얻을 수 있습니다.

from datetime import datetime

todaysDate = datetime.now()
todaysDateInISO = todaysDate.isoformat()

print(todaysDateInISO)

출력:

2022-09-28T07:46:13.350585

결과에는 종종 날짜와 시간 사이에 구분 기호가 포함됩니다. 여기서는 T이며 변경할 수 있습니다. 인수를 전달하여 구분 기호를 변경할 수 있습니다.

todaysDateInISO = todaysDate.isoformat("$")

print(todaysDateInISO)

출력:

2022-09-28$07:48:11.060212

이제 문제의 핵심으로 ISO 8601 DateTime 문자열을 일반적인 Python DateTime 객체로 구문 분석할 수 있습니다.

parsedDate = datetime.fromisoformat(todaysDateInISO)
print(parsedDate)

출력:

2022-09-29 14:38:17.928655

dateutil을 사용하여 Python에서 ISO 8601 날짜 구문 분석

dateutil Python 모듈은 내장 datetime 모듈을 통해 액세스할 수 있는 기능을 확장하는 데 사용할 수 있는 타사 모듈입니다.

설치하려면 pip 명령을 사용할 수 있습니다.

pip install python-dateutil

출력:

Collecting python-dateutil
  Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 kB 506.3 kB/s eta 0:00:00
Collecting six>=1.5
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: six, python-dateutil
Successfully installed python-dateutil-2.8.2 six-1.16.0

또한 pip 명령을 사용하여 설치할 수 있는 pytz라는 다른 타사 모듈을 사용하여 시간대 기능을 도입할 수도 있습니다.

pip install pytz

이러한 라이브러리는 표준 시간대를 기반으로 ISO 8601 날짜 형식을 쉽게 만들고 ISO 8601 DateTime 문자열을 일반적인 Python DateTime 개체로 구문 분석할 수 있습니다.

예를 들어 US/Eastern 시간대를 사용하고 timezone() 메서드, now() 메서드 및 isoformat() 메서드를 사용하여 ISO 8601 DateTime 문자열을 만듭니다.

from datetime import datetime
import pytz

usEasternDate = datetime.now(pytz.timezone("US/Eastern"))
print(usEasternDate)

usEasternDateISO = usEasternDate.isoformat()
print(usEasternDateISO)

출력:

2022-09-29 10:01:17.654150-04:00
2022-09-29T10:01:17.654150-04:00

그런 다음 ISO 8601 DateTime 문자열을 Python DateTime 객체로 구문 분석하기 위해 인수로 전달된 ISO 날짜와 함께 parse() 메서드를 사용할 수 있습니다.

parsedDate = parser.parse(usEasternDateISO)
print(parsedDate)

출력:

2022-09-29 10:01:17.654150-04:00
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn