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을 설명하십시오. 기존의 순수 Python 구현을 다른 대상에 맞게 쉽게 고칠 수 있습니까?

출력 형식

모든 입력 형식을 출력 형식으로 지원할 필요는 없습니다. 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의 Python 구현은 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