簡體   English   中英

python字符串至今ISO 8601

[英]python string to date ISO 8601

我正在從舊系統轉換許多晦澀的日期格式。 將日期解壓縮/處理為字符串,然后轉換為ISO 8601格式。

這個特定的函數試圖將YYMMDD0F轉換為YYYYMMDD-函數名稱說明了一切。 從2000年開始的日期使這一點變得混亂,並且顯然這不是處理它們的最有效的方法。 如何使用dateutil.parser使它更好?

def YYMMDD0FtoYYYYMMDD(date):
    YY  = date[0:2]
    MM  = date[2:4]
    DD  = date[4:6]
    if int(YY) >= 78:
        YYYY = '19%s' % YY
    elif 0 <= int(YY) <= 77 and MM!='' and MM!='00': 
        YYYY = '20%s' % YY
    else:
        YYYY = '00%s' % YY
    return "%s-%s-%s" % (YYYY, MM, DD)  

您不需要使用dateutil ,可以通過datetime.strptime / .strftime

from datetime import datetime

def YYMMDD0FtoYYYYMMDD(date):
    return datetime.strptime(date[:6], "%y%m%d").strftime("%Y-%m-%d")

用法示例:

>>> YYMMDD0FtoYYYYMMDD('1403110F')
'2014-03-11'

您可能需要查看datetime模塊。 使用其日期格式功能,您可以執行以下操作:

>>> import datetime as dt
>>> ds = '0104160F'
>>> parsed = dt.datetime.strptime(ds, "%y%m%d0F")
>>> parsed
datetime.datetime(2001, 4, 16, 0, 0)    
>>> reformatted = dt.datetime.strftime(parsed, "%Y-%m-%d")
>>> reformatted
'20010416'

在您的函數中,可以按以下方式使用它們:

def YYMMDD0FtoYYYYMMDD(date):
    return dt.datetime.strftime(dt.datetime.strptime(date, "%y%m%d0F"), "%Y-%m-%d")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM