2016-07-02 3 views
4

datetimeを使用してコードブロックを書きたいので、datetime.now()が土曜日または金曜日の午後4時になると、渡された金曜日に4pmの日時オブジェクトを作成します。曜日に基づいてdatetimeを使用して日付を作成するにはどうすればいいですか?

私は次のように完了しています

from datetime import datetime 

datenow = datetime.now() 
if datenow.isoweekday() == 6 or (datenow.isoweekday() in [5] and datenow.hour >=16): 
      ## change datenow to the passing friday at 4pm. 

誰かが私を助けてくださいことはできますか?

答えて

0

完全なソリューション:

def set_prev_iso_week_day(val, iso_week_day): 
    """ 
    Set ISO week day. 
    New date will be less or equal than input date. 
    :param val: datetime or date 
    :type val: datetime.datetime | datetime.date 
    :param iso_week_day: ISO week day to set 
    :type iso_week_day: int 
    :return: datetime.datetime | datetime.date 
    """ 
    if val.isoweekday() == iso_week_day: 
     return val 
    diff = iso_week_day - val.isoweekday() 
    diff = -diff if diff < 0 else 7 - diff 
    val -= timedelta(days=diff) 
    return val 

datenow = set_prev_iso_week_day(datenow, 5).replace(hour=16,minute=0,second=0,microsecond=0) 

や私のlib t77_dateと使用を使用します。

from t77_date.constants import ISO_FRIDAY 
from t77_date.datetime import set_prev_iso_week_day 


datenow = set_prev_iso_week_day(datenow, ISO_FRIDAY).replace(hour=16,minute=0,second=0,microsecond=0) 
0

このお試しください:

from datetime import timedelta 

def mod_time(datenow): 
    if datenow.isoweekday() in [6,7]:#for Saturday or Sunday 
    print datenow 
    datenow -= timedelta(days=datenow.isoweekday()-5) #Going back to Friday 
    print datenow 
    datenow = datenow.replace(hour=16,minute=0,second=0,microsecond=0) #Making 4pm 
    print datenow 

    return datenow 

`` `

関連する問題