2

私は次のような日付を持っています

date['min'] = '2013-11-11'
date['max'] = '2013-11-23'

日付がその範囲内にある場合に true を返す単一行関数はありますか。

のみdate.minが提供されている場合は、指定された日付がそれよりも大きいかどうかを確認する必要があり、最大のみが提供されている場合は、それよりも小さいかどうかを確認する必要があります。両方が提供されている場合、それらの間に該当するかどうか

4

3 に答える 3

7

フォーム内の日付は、YYYY-MM-DDアルファベット順に比較することもできます。

'2013-11-11' < '2013-11-15' < '2013-11-23'

date['min'] < your_date < date['max']

DD.MM.YYYYこれは、やなどの他の形式では正しく機能しませんMM/DD/YYYY。その場合、文字列を解析してdatetimeオブジェクトに変換する必要があります。

最小/最大変数が存在するかどうかがわからない場合は、次のことができます。

date.get('min', '0000-00-00') < your_date < date.get('max', '9999-99-99')

デフォルトのテキスト値を任意のものに置き換えます。

于 2013-04-23T09:56:58.157 に答える
2

単純な比較はそれでうまくいくと思います。

>>> from datetime import timedelta, date
>>> min_date = date.today()
>>> max_date = date.today() + timedelta(days=7)
>>> d1 = date.today() + timedelta(days=1)
>>> d2 = date.today() + timedelta(days=10)
>>> min_date < d1 < max_date
True
>>> min_date < d2 < max_date
False

更新されたバージョンは次のとおりです。

def is_in_range(d, min=date.min, max=date.max):
    if max:
        return min < d < max
    return min < d


print is_in_range(d1, min_date, max_date)
print is_in_range(d2, min_date, max_date)
print is_in_range(d1, min_date)
print is_in_range(d2, min_date)

True
False
True
True
于 2013-04-23T10:01:46.523 に答える
1

日付オブジェクトを扱う場合:

from datetime import date
in_range = (first_date or date.min) < my_date < (second_date or date.max)
于 2013-04-23T10:08:05.110 に答える