亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python:如何檢查時間是否超過指定時間?

Python:如何檢查時間是否超過指定時間?

一只名叫tom的貓 2023-10-26 16:55:55
我正在嘗試編寫一個停車場收費計算器。提供多種費率:上午 7 點至晚上 10.30 - 每 30 分鐘 0.60 美元 夜間費 晚上 10.30 至上午 7 點 - 固定費用 5 美元如果停車時間從白天費率溢出到夜間費率,我該如何計算?下面是我現在所在的位置。我不確定從這里該去哪里,或者這是否是正確的開始方式。def getCharge(self, endTime, startTime, rate):    endTime = datetime.strptime(endTime, '%d/%m/%Y %H:%M')    startTime = datetime.strptime(startTime, '%d/%m/%Y %H:%M')    # elapsedDays = (endTime - startTime).days    # print(elapsedDays)    duration = (endTime - startTime).total_seconds() / 60    print(duration)    blocks = math.ceil( duration / 30 )    print(blocks)    charge = blocks * rate    return charge總結一下:如果停車時間超過晚上 10.30(將收取夜間平價費用),我該如何添加支票如果停車時間超過夜間時間并進入第二天早上7點后,如何添加支票(前一天的日費+夜間費+第二天的日費)
查看完整描述

2 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

根據 Alex 的回答,這里有一個稍微優化和改進的解決方案:


import datetime


HALFHOUR_RATE = 0.6

NIGHT_FEE = 5


def get_charge2(start_datetime, end_datetime):

    tmp_datetime = start_datetime

    charged = 0


    while tmp_datetime < end_datetime:

        if tmp_datetime.hour >= 7 and tmp_datetime.hour < 22 or (tmp_datetime.hour == 22 and tmp_datetime.minute < 30):

            # It is a day [7, 22:30)

            charged += HALFHOUR_RATE * 10 # avoid rounding error

            tmp_datetime += datetime.timedelta(minutes=30)

        else:

            # It is a night [22:30, 7)

            charged += NIGHT_FEE * 10  # avoid rounding error

            tmp_datetime += datetime.timedelta(hours=8.5) # night == 8.5 hours

   

    return charged/10 # adjust result


查看完整回答
反對 回復 2023-10-26
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

最簡單的方法是每 30 分鐘迭代一次并以這種方式計算費用。


HALFHOUR_RATE = 0.6

NIGHT_FEE = 5



def get_charge(start_datetime, end_datetime):

    tmp_datetime = start_datetime

    charged = 0

    last_night_charged_day = None


    while tmp_datetime < end_datetime:

        if tmp_datetime.hour >= 22 or tmp_datetime.hour < 7:

            if tmp_datetime.hour == 22 and tmp_datetime.minute < 30:

                # Still not a night

                charged += HALFHOUR_RATE

            # It is a night

            else:

                day = tmp_datetime.day

                if tmp_datetime.hour < 7:

                    day -= 1

                if day != last_night_charged_day:

                    last_night_charged_day = day

                    # Charge one time night fee

                    charged += NIGHT_FEE

        else:

            # It is a day

            charged += HALFHOUR_RATE

        tmp_datetime += datetime.timedelta(minutes=30)


    return charged


查看完整回答
反對 回復 2023-10-26
  • 2 回答
  • 0 關注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號