我聽說可以使用大多數編程語言中的模數%
運算符來完成此操作。真正的問題是,如何?我不熟悉模數是如何工作的,所以我在過去使用它時遇到了困難。鑑於1970年以來的現在時間,1307758473.484
,我如何計算多少年即幾天,即幾小時,以及使用模數的幾分鐘?將秒數拆分爲幾天,幾小時,幾分鐘和幾秒?
我基本上想要像這樣格式化它:「5年,10天,12小時,7分鐘和18.56秒」。我將如何做到這一點?我非常有興趣瞭解這個背後的邏輯,並且對而不是感興趣的是一個簡單的插入式解決方案。
我聽說可以使用大多數編程語言中的模數%
運算符來完成此操作。真正的問題是,如何?我不熟悉模數是如何工作的,所以我在過去使用它時遇到了困難。鑑於1970年以來的現在時間,1307758473.484
,我如何計算多少年即幾天,即幾小時,以及使用模數的幾分鐘?將秒數拆分爲幾天,幾小時,幾分鐘和幾秒?
我基本上想要像這樣格式化它:「5年,10天,12小時,7分鐘和18.56秒」。我將如何做到這一點?我非常有興趣瞭解這個背後的邏輯,並且對而不是感興趣的是一個簡單的插入式解決方案。
當你做整數除法,你得到商和餘數。例如,
5 divided by 3 is quotient 1 with remainder 2.
在編程語言中,這通常被表述爲:
5/3 # => 1
5 % 3 # => 2
你想要的轉換隻是這個repeatation。 從下單元開始更容易,更高。
首先,你必須
1307758473.484 seconds
從60年代秒1分鐘,
1307758473.484/60 = 21795974 (intended to be integer division)
1307758473.484 % 60 = 33.484,
它是一樣的
21795974 minutes 33.484 seconds
由於60分鐘1小時,
21795974/60 = 363266
21795974 % 60 = 14
它進一步相同
363266 hours 14 minutes 33.484 seconds
現在,有難度的一點點。大多數日子是24小時。當有閏秒時,則不是。如果忽略閏秒,並假定胃1天24小時,然後,通過執行計算,
363266/24 = 15136
363266 % 24 = 2
,進一步一樣
15136 days 2 hours 14 minutes 33.484 seconds
。同樣,大多數年份是365天。當有一個閏日(年)時,它不是。如果你忽略了飛躍天,假設1年的365天,然後通過執行計算,
15136/365 = 41
15136 % 365 = 171
,進一步一樣
41 years 171 days 2 hours 14 minutes 33.483 seconds
模數在執行整數除法時返回餘數。
我認爲它最容易理解如何使用國防部首先向後解決問題。
讓我們從小時,分鐘和秒開始簡單 - 精確的1小時10分30秒。
首先,你有30秒。這很容易 - 這只是30.沒有腦筋。 現在添加分鐘數 - 將分鐘數確定爲乘以60的秒數。因此,10分30秒= 630秒。
現在我們看看mod是如何工作的 - 因爲如果你將除以60得到10.5,但是如果你忽略了分數(整數除法),那麼你得到10。
所以,如果你MOD 630 60你30 - 爲分鐘分割時630 30
所以決定分,秒,除以60的餘留下來,並通過60秒國防部。
現在添加一小時。一小時= 60分鐘,60分鐘爲60 * 60秒,1小時= 3600秒。 3600 + 600 + 30 = 4230秒。
三千六百分之四千二百三十零(1小時)= 1 - 所以我們有1小時
4230%(MOD)3600 = 630 - 抓住這個,現在我們處理分鐘。
所以如果進一步充實了這一點,並添加一個天 - 1天= 24小時數= 24 * 3600 = 86400 86400 + 3600 + 600 + 30 = 90630
八萬六千四百分之九萬〇六百三十零= 1 - > 1天
90630%86400 = 4230 - >秒遺留
三千六百分之四千二百三十零= 1 - >1小時
並重覆上述邏輯。
希望可以幫助清理它 - 你不斷重複這個迭代,你可以做幾個星期和幾年,但是月份是特殊的,因爲它們是不規則的,閏年也是如此。
很好的回答。 @TK,將其與進行更改並將數字從基數x轉換爲基數y進行比較。這裏有一個共同的模式。 – 2011-06-11 02:40:11