簡體   English   中英

找出兩個選定小時之間的差異

[英]find difference between two selected hours

我有兩個選定的小時數,取值范圍是0-23。 如何以編程方式計算它們之間的差異? 例如,22與4之間的差異將為6、22與24-2。

這是一個模24運算(有關的詳細信息的一個例子的模算術 )。

時間是模24的全等,關於24有一個全等(或等價)(例如1是等價(或等價)到25)。 您可以只計算差異的模塊。

(second_time - first_time) modulo 24

在您的示例中

(4 - 22) modulo 24 = -18 modulo 24 = 6
(24 - 22) modulo 24 = 2 modulo 24 = 2

編輯:

只是要更詳細一點。 該答案僅考慮您在問題中指定的詳細信息,即從0-23開始的小時數。 如果您想實現更復雜的目標,則需要考慮很多特殊情況和例外情況。

例如,使用我的方法,您將無法獲得0:00和24:00之間的時差,因為它們是相等的時間,因此您需要為其指定特定的情況。 無論如何,如果如上所述,時間只是從0到23,那么0:00和0:00之間的時差將取決於它們是相同的時間還是之后的24h周期,這將在任意兩個相等的時間發生(6 :00到6:00,是同一天還是+ N天?)。 因此,您需要另外安排一個日期來解決這種歧義。

如果您使用分鍾,如果考慮時區,leap秒等等,則會帶來更多的復雜性。

根據您使用的語言,模運算符可能會對負數產生復雜的影響,因此您也應該考慮這一點(添加循環時間可以解決此問題)。 因此改為:

(second_time - first_time + 24) modulo 24

讓我們假設first_time為第一個選定的小時,second_time為第二個選定的小時。

偽代碼:

if first_time > 12:
    first_time = 24 - first_time
if second_time < 12:
    second_time = -second_time
time_difference = abs(first_time - second_time)

如果需要絕對差異,則可以使用abs()函數,否則可以將其排除。

暫無
暫無

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

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