簡體   English   中英

計算某個日期已經過了午夜多少次的問題

[英]Problem with calculating how many times some date has passed midnight

我想尋求幫助。 我是 Python 的初學者。 我嘗試編寫一個 function,它總結了兩個“時間”並返回 new_time 以及 new_time 過了多少次“start_time”的午夜(例如 23:00 和 03:00,new_date 是 02:00 和 1 天已通過 )

非常感謝你提前

from datetime import datetime, timedelta


def add_time(start_time: str, time_to_add: str):
    start_time_time = datetime.strptime(start_time, "%H:%M")
    add_time_time = datetime.strptime(time_to_add, "%H:%M")
    new_time = start_time_time + timedelta(minutes=add_time_time.minute, hours=add_time_time.hour)

    return f"New time is {new_time.strftime('%H:%M')}, XXX days after"

print(add_time("23:20", "19:20"))

計算 start_time_time 和 new_time 的日期。 經過的天數將是這些日期之間的差異(以天為單位)。

我相信有幾種方法可以從“日期時間”中提取日期,但我剛剛將小時和分鍾替換為零。

from datetime import datetime, timedelta

def add_time(start_time: str, time_to_add: str):
    start_time_time = datetime.strptime(start_time, "%H:%M")
    start_date = start_time_time.replace(hour=0, minute=0)
    #print(start_date)
    add_time_time = datetime.strptime(time_to_add, "%H:%M")
    new_time = start_time_time + timedelta(minutes=add_time_time.minute, hours=add_time_time.hour)
    new_date = new_time.replace(hour=0, minute=0)
    #print(new_date)
    
    days_elapsed = (new_date - start_date).days
    
    return f"New time is {new_time.strftime('%H:%M')}, {days_elapsed} days after"

print(add_time("23:20", "19:20"))

以下代碼片段演示了如何計算之后的天數。 您可以取消注釋打印語句以查看這些日期實際代表什么。

希望這可以幫助。

有很多方法可以做到這一點,我這樣做的方式是它應該允許你添加 100 小時的例子等。希望這會有所幫助。

from datetime import datetime, timedelta

# Function that adds time HH:mm to a datetime object, adds set Hours and Minutes to start time and returns total days, hours, minutes and seconds passed
def add_time(start_time, time_to_add):
    # Add time to start time
    start_time = datetime.strptime(start_time, '%H:%M')
    # Strip hours, minutes and convert to ms
    time_to_add = time_to_add.split(':')
    time_to_add = timedelta(hours=int(time_to_add[0]), minutes=int(time_to_add[1]))
    finish_time = start_time + time_to_add

    # Calculate total days, hours, minutes and seconds passed
    total_days = finish_time.day - start_time.day
    total_hours = finish_time.hour - start_time.hour
    total_minutes = finish_time.minute - start_time.minute
    total_seconds = finish_time.second - start_time.second

    # Return total days, hours, minutes and seconds passed
    return total_days, total_hours, total_minutes, total_seconds

# today + 23 hours + 20 minutes
days, hours, minutes, seconds = add_time("13:13", "25:00")

print(days, hours, minutes, seconds)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM