1

古いシステムから多くのあいまいな日付形式を変換しています。日付は文字列として解凍/処理され、ISO 8601 形式に変換されます。

この特定の関数は、YYMMDD0F を YYYYMMDD に変換しようとします。関数名がすべてを表しています。2000 年からの日付はこれを乱雑にし、明らかにこれはそれらを処理する最も Pythonic な方法ではありません。を使用してこれを改善するにはどうすればよい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)  
4

2 に答える 2

1

を使用する必要はありません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'
于 2014-03-11T14:17:51.663 に答える
1

モジュールを参照することをお勧めし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")
于 2014-03-11T14:18:10.993 に答える