Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 개선 제안 한국어 번역

PEP 321 – 날짜/시간 파싱과 포매팅

Author:
A.M. Kuchling <amk at amk.ca>
Status:
Withdrawn
Type:
Standards Track
Created:
16-Sep-2003
Python-Version:
2.4
Post-History:


Table of Contents

번역·라이선스 안내

이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판

개요

Python 2.3은 datetime 모듈에 여러 간단한 날짜 및 시간 타입을 추가했습니다. 다양한 형식의 문자열을 파싱하여 해당 타입 중 하나의 인스턴스를 반환하는 기능은 지원되지 않습니다. 이 PEP는 흔히 사용되는 여러 날짜 및 시간 형식에 대해 미리 정의된 파싱 함수 모음과, 범용 파싱을 위한 기능을 추가할 것을 제안합니다.

datetime 모듈이 제공하는 타입들은 모두 시간의 문자열 표현을 반환하는 .isoformat().ctime() 메서드를 가지고 있으며, .strftime() 메서드를 사용하여 새로운 형식을 구성할 수 있습니다. 표준 라이브러리의 일부로 포함되면 유용할 흔히 사용되는 형식이 여러 가지 더 있습니다; 이 PEP는 이를 추가하는 방법도 제안합니다.

입력 형식

지원하면 유용한 형식은 다음과 같습니다:

  • ISO8601
  • ARPA/RFC 2822
  • ctime
  • “MM/DD/YYYY”와 같은 미국식, “YYYY/MM/DD”와 같은 유럽식, 그리고 “DD-Month-YYYY”와 같은 변형 등, 사람들이 흔히 작성하는 형식.
  • CVS 스타일 또는 tar 스타일 날짜(“tomorrow”, “12 hours ago” 등)

XXX Perl의 ParseDate.pm 모듈은 절대적 및 상대적 형식을 포함하여 다양한 입력 형식을 지원합니다. 이들을 모두 지원하도록 시도해야 합니까?

옵션:

  1. datetime 모듈에 함수를 추가합니다:
    import datetime
    d = datetime.parse_iso8601("2003-09-15T10:34:54")
    
  2. 여러 타입에 클래스 메서드를 추가합니다. .now()와 같은 다양한 클래스 메서드가 이미 있으므로, 이는 상당히 자연스러울 것입니다.:
    import datetime
    d = datetime.date.parse_iso8601("2003-09-15T10:34:54")
    
  3. 파싱 함수를 담은 별도의 모듈(가능한 이름: date, date_parse, parse_date)이나 서브패키지(가능한 이름: datetime.parser)를 추가합니다:
    import datetime
    d = datetime.parser.parse_iso8601("2003-09-15T10:34:54")
    

미해결 질문:

  • 사용할 명명 규칙.
  • 오류 발생 시 어떤 예외를 발생시켜야 할까요? ValueError일까요, 아니면 특수화된 예외일까요?
  • 예상되는 타입을 미리 알아야 할까요, 아니면 파싱이 이를 알아내야 할까요? (예를 들어, parse_iso8601("yyyy-mm-dd")date 인스턴스를 반환하지만, “yyyy-mm-ddThh:mm:ss”를 파싱하면 datetime을 반환합니다.) 시간이 예상되지 않는데 제공된 경우, 혹은 시간이 제공되지 않은 경우 오류를 알리는 옵션이 있어야 할까요?
  • 국제화(I18N)에 필요한 특별한 사항이 있을까요? 시간대의 경우는 어떨까요?

범용 입력 파싱

datetime 타입을 반환하는 strptime() 구현으로 충분할까요?

XXX 그렇다면, 여기에 strptime을 설명하십시오. 기존의 순수 파이썬 구현을 쉽게 재대상화할 수 있을까요?

출력 형식

YYYY/MM/DD와 같은 단순한 형식에서는 strftime() 인자를 올바르게 지정하는 것이 매우 간단하므로, 모든 입력 형식을 출력 형식으로 지원할 필요는 없습니다. 복잡한 형식만 지원하면 되며, 현재 제가 떠올릴 수 있는 것은 RFC 2822뿐입니다.

옵션:

  1. 미리 정의된 형식 문자열을 제공하여 다음과 같이 작성할 수 있게 합니다:
    import datetime
    d = datetime.datetime(...)
    print d.strftime(d.RFC2822_FORMAT) # or datetime.RFC2822_FORMAT?
    
  2. 모든 객체에 새로운 메서드를 제공합니다:
    d = datetime.datetime(...)
    print d.rfc822_time()
    

다른 언어의 관련 기능으로는 PHP date 함수(Simon Willison이 http://simon.incutio.com/archive/2003/10/07/dateInPython 에서 구현한 파이썬 버전)가 있습니다

참조

그 밖의 유용한 링크:

http://www.egenix.com/files/python/mxDateTime.html http://ringmaster.arc.nasa.gov/tools/time_formats.html http://www.thinkage.ca/english/gcos/expl/b/lib/0tosec.html https://moin.conectiva.com.br/DateUtil