>  기사  >  백엔드 개발  >  Python에서 약식 시간대 이름을 사용하여 날짜/시간 문자열을 구문 분석하는 방법은 무엇입니까?

Python에서 약식 시간대 이름을 사용하여 날짜/시간 문자열을 구문 분석하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-24 08:58:30464검색

How to Parse Date/Time Strings with Abbreviated Timezone Names in Python?

Python에서 축약된 시간대 이름을 사용하여 날짜/시간 문자열 구문 분석

날짜 및 시간 데이터 작업 시 일반적인 작업 중 하나는 다음을 나타내는 문자열을 구문 분석하는 것입니다. 타임스탬프. 이러한 타임스탬프에는 약식 시간대 이름이 포함될 수 있으므로 파싱이 어려울 수 있습니다.

Python에서 dateutil 라이브러리는 날짜/시간 문자열을 파싱하기 위한 parse() 함수를 제공합니다. 그러나 기본적으로 구문 분석()은 축약된 시간대 이름을 인식하지 못합니다.

해결 방법

약식 시간대 이름을 처리하려면 시간대 약어 사전을 구문 분석()의 tzinfos 매개변수입니다. 이 사전은 시간대 약어를 해당 GMT 오프셋(초)에 매핑해야 합니다.

시간대 약어 사전을 만드는 방법은 다음과 같습니다.

<code class="python">tz_str = '''-12 Y
-11 X NUT SST
-10 W CKT HAST HST TAHT TKT
-9 V AKST GAMT GIT HADT HNY
-8 U AKDT CIST HAY HNP PST PT
-7 T HAP HNR MST PDT
-6 S CST EAST GALT HAR HNC MDT
-5 R CDT COT EASST ECT EST ET HAC HNE PET
-4 Q AST BOT CLT COST EDT FKT GYT HAE HNA PYT
-3 P ADT ART BRT CLST FKST GFT HAA PMST PYST SRT UYT WGT
-2 O BRST FNT PMDT UYST WGST
-1 N AZOT CVT EGT
0 Z EGST GMT UTC WET WT
1 A CET DFT WAT WEDT WEST
2 B CAT CEDT CEST EET SAST WAST
3 C EAT EEDT EEST IDT MSK
4 D AMT AZT GET GST KUYT MSD MUT RET SAMT SCT
5 E AMST AQTT AZST HMT MAWT MVT PKT TFT TJT TMT UZT YEKT
6 F ALMT BIOT BTT IOT KGT NOVT OMST YEKST
7 G CXT DAVT HOVT ICT KRAT NOVST OMSST THA WIB
8 H ACT AWST BDT BNT CAST HKT IRKT KRAST MYT PHT SGT ULAT WITA WST
9 I AWDT IRKST JST KST PWT TLT WDT WIT YAKT
10 K AEST ChST PGT VLAT YAKST YAPT
11 L AEDT LHDT MAGT NCT PONT SBT VLAST VUT
12 M ANAST ANAT FJT GILT MAGST MHT NZST PETST PETT TVT WFT
13 FJST NZDT
11.5 NFT
10.5 ACDT LHST
9.5 ACST
6.5 CCT MMT
5.75 NPT
5.5 SLT
4.5 AFT IRDT
3.5 IRST
-2.5 HAT NDT
-3.5 HNT NST NT
-4.5 HLV VET
-9.5 MART MIT'''

tzd = {}
for tz_descr in map(str.split, tz_str.split('\n')):
    tz_offset = int(float(tz_descr[0]) * 3600)
    for tz_code in tz_descr[1:]:
        tzd[tz_code] = tz_offset</code>

시간대 약어 사전을 사용하면 날짜를 구문 분석할 수 있습니다. /time string:

<code class="python">import dateutil.parser as dp

s = 'Sat, 11/01/09 8:00PM EST'
dt = dp.parse(s, tzinfos=tzd)

print(dt)
# Output: 2009-11-01 20:00:00-05:00</code>

참고

시간대 이름 지정이 명확하게 정의되지 않았으므로 축약된 시간대를 구문 분석할 때 일부 충돌이 발생할 수 있다는 점에 유의하는 것이 중요합니다. 구문 분석된 타임스탬프를 해석할 때 데이터의 컨텍스트와 위치를 신중하게 고려하는 것이 좋습니다.

위 내용은 Python에서 약식 시간대 이름을 사용하여 날짜/시간 문자열을 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.