2 回答

TA貢獻1828條經驗 獲得超6個贊
from datetime import datetime, timedelta
# get the date and time for now
now = datetime.now()
# get the current day at midnight
today = now.replace(hour=0, minute=0, second=0, microsecond=0)
# get Tuesday at midnight
tues = today + timedelta( (1-today.weekday()) % 7 )
# get the seconds from now until Tuesday at midnight
seconds_to_tues_midnight = (tues - now).total_seconds()
# get the seconds from now until Tuesday at noon
seconds_to_tues_noon = seconds_to_tues_midnight + timedelta(hours=12)/timedelta(seconds=1)
作為函數
from typing import Tuple
def time_to_tuesday(now: datetime) -> Tuple[float, float]:
today = now.replace(hour=0, minute=0, second=0, microsecond=0)
tues = today + timedelta( (1-today.weekday()) % 7 )
midnight = (tues - now).total_seconds()
noon = midnight + timedelta(hours=12)/timedelta(seconds=1)
return midnight, noon
time_to_tuesday(datetime.now())

TA貢獻1719條經驗 獲得超6個贊
第一個問題
我想獲得未來星期二中午 12:00 之前的準確時間(以秒為單位)
我想您想要從今天開始直到星期二 12:00 的準確時間(以秒為單位)
import datetime
def relative_date(reference, weekday, timevalue):
hour, minute = divmod(timevalue, 1)
minute *= 60
days = reference.weekday()+(reference.weekday() - weekday)
return (reference + datetime.timedelta(days=days)).replace(hour=int(hour), minute=int(minute), second=0, microsecond=0)
today = datetime.datetime.now()
Tuesday = relative_date(today, 1, 12)
seconds_to_call = (Tuesday - today).total_seconds()
print(seconds_to_call)
# OUTPUT: 405778.097769
您必須計算今天和下周二兩個日期之間的差異。該函數relative_date計算下周二的確切日期并將小時設置為12:00:00.000。
第二個問題
我想運行程序獲取 00:00 之前的秒數,然后獲取 12 點之前的秒數 (43,200)
你可以這樣做:
import datetime
def relative_date(reference, weekday, timevalue):
hour, minute = divmod(timevalue, 1)
minute *= 60
days = reference.weekday()+(reference.weekday() - weekday)
return (reference + datetime.timedelta(days=days)).replace(hour=int(hour), minute=int(minute), second=0, microsecond=0)
today = datetime.datetime.now()
Tuesday_midnight = relative_date(today, 1, 0)
seconds_to_call = ((Tuesday_midnight - today) + datetime.timedelta(hours=12)).total_seconds()
print(seconds_to_call)
# OUTPUT: 405778.097769
在這種情況下,計算直到午夜的時間是沒有用的,您可以直接從中午獲取total_seconds,如第一個問題的代碼中所示。
添加回答
舉報