Pythonでは、日付が与えられた場合、前の平日をどのように見つけるのですか? (平日は月~金。休日は問いません)
19825 次
4 に答える
50
指定された日付から 1 日を差し引いて、その日付が平日かどうかを確認します。そうでない場合は、平日になるまで別の値を引きます。
from datetime import date, timedelta
def prev_weekday(adate):
adate -= timedelta(days=1)
while adate.weekday() > 4: # Mon-Fri are 0-4
adate -= timedelta(days=1)
return adate
デモ:
>>> prev_weekday(date.today())
datetime.date(2012, 8, 20)
>>> prev_weekday(date(2012, 8, 20))
datetime.date(2012, 8, 17)
または、オフセット テーブルを使用します。これをマッピングにする必要はありません。タプルで問題ありません。
_offsets = (3, 1, 1, 1, 1, 1, 2)
def prev_weekday(adate):
return adate - timedelta(days=_offsets[adate.weekday()])
于 2012-08-21T11:20:03.513 に答える
1
datetimeモジュール、特にdate()
andweekday()
関数を参照してください。例えば:
import datetime
temp = datetime.date(2012,8,21) # Today's date: 2012/08/21
print temp.weekday()
これは出力されます1
。月曜日、火曜日などを0
表し、日曜日まで。ここから前の平日を簡単に見つけることができます。1
6
于 2012-08-21T11:16:46.240 に答える
1
a = date.today() - timedelta(days=1)
datetime モジュールでは、次のようなことができますa.weekday()
。月曜日が 0 で、日曜日が 6 です。
于 2012-08-21T11:21:18.373 に答える