[英]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.