0

文字列で表される 2 つの日付があるとします。MM-DD-YY

Pythonで最初に来る日付を見つける最も効率的な方法は何ですか? 次のアプローチを試しましたが、すぐに面倒になりました。

次の出力を探しています:return 1 if first date comes before, 0 if second date comes before, -1 if dates are exactly the same

うまくいけば、誰かがよりクリーンなアプローチを持っています

date1 = "02-20-10"
date2 = "03-21-09"

def firstDateBefore(date1, date2):      
    month1, day1, year1 = date1.split("-")
    month2, day2, year2 = date2.split("-")

    month1 = int(month1)
    month2 = int(month2)
    day1 = int(day1)
    day2 = int(day2)
    year1 = int(year1)
    year2 = int(year2) 

    if (year1 < 13 && year2 < 13):      #both in the year 2000's
        if (year1 < year2):
            return 1
        else if (year1 > year2):
            return 0;
        else:               #years are equal
            if (month1 < month2):   
                return 1
            else if (month1 > month2):
                return 0
            else:           #months are equal
                if (day1 < day2):
                    return 1
                else if (day1 > day2):
                    return 0
                else 
                    return -1   # the Dates are exactly the same!
4

2 に答える 2

3

パイソンには電池が付属しています。

from datetime import datetime

d1 = datetime.strptime(date1, "%m-%d-%y")
d2 = datetime.strptime(date2, "%m-%d-%y")

assert d1 > d2

"%m-%d-%y"を意味します。

于 2013-10-22T06:45:28.727 に答える
0

日付をタイムスタンプに変換して、すばやく比較できます。

from datetime import datetime

def firstDateBefore(date1, date2):
    d1 = datetime.datetime.strptime(date1, '%m-%d-%y').strftime('%s')
    d2 = datetime.datetime.strptime(date2, '%m-%d-%y').strftime('%s')
    if d1 > d2:
        return d1
    elif d1 == d2:
        return 'same date'
    else:
        return D2

この例では、日付が等しい場合、より大きな日付または「同じ日付」を返します...

于 2013-10-22T15:47:04.590 に答える