Swift 整數轉換為小時/分鐘/秒


在 Swift 中,有很多方法可以將整數轉換為時間組成部分,例如小時、分鐘和秒。每種方法都取決於具體需求。例如,可以使用算術運算子進行轉換。另一種方法是使用 DateComponentsFormatter 類輕鬆地將整數轉換為時間組成部分。

在本文中,您將看到許多將整數轉換為時間組成部分的示例。

示例 1

要將表示秒數的整數轉換為小時、分鐘和秒,可以使用 Swift 中的以下程式碼:

import Foundation
let durationInSeconds = 3661
let hours = durationInSeconds / 3600
let minutes = (durationInSeconds % 3600) / 60
let seconds = durationInSeconds % 60
print("Duration: \(hours) hours, \(minutes) minutes, \(seconds) seconds")

輸出

Duration: 1 hours, 1 minutes, 1 seconds

此程式碼透過將持續時間除以 3600(一小時中的秒數)來計算小時數,透過取除以 3600 的餘數然後除以 60(一分鐘中的秒數)來計算分鐘數,並透過取除以 60 的餘數來計算秒數。

示例 2:將 60 秒轉換為小時、分鐘和秒

import Foundation
let durationInSeconds = 60
let hours = durationInSeconds / 3600
let minutes = (durationInSeconds % 3600) / 60
let seconds = durationInSeconds % 60
print("Duration: \(hours) hours, \(minutes) minutes, \(seconds) seconds")

輸出

Duration: 0 hours, 1 minutes, 0 seconds

在此示例中,持續時間為 60 秒,等於 0 小時、1 分鐘和 0 秒。程式碼計算這些值並將其列印到控制檯。

示例 3:使用 DateComponentsFormatter 類轉換秒數

以下是 Swift 中使用 DateComponentsFormatter 類的另一種方法:

import Foundation
let durationInSeconds = 3661
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute, .second]
formatter.unitsStyle = .full
if let formattedString = formatter.string(from: TimeInterval(durationInSeconds)) {
   print("Duration: \(formattedString)")
}

輸出

Duration: 1 hour, 1 minute, 1 second

此程式碼使用 DateComponentsFormatter 類將持續時間格式化為包含小時、分鐘和秒的字串。allowedUnits 屬性指定輸出中應包含哪些單位,unitsStyle 屬性確定如何格式化單位。在本例中,我們使用 .full 樣式,它會生成類似“1 小時、1 分鐘、1 秒”的輸出。

DateComponentsFormatter 類的 string(from:) 方法用於生成格式化的字串。我們將持續時間作為 TimeInterval 傳遞,TimeInterval 是 Double 的類型別名,表示以秒為單位的持續時間。如果可以成功生成格式化的字串,我們將將其列印到控制檯。

如果您想以特定方式排列時間或根據使用者的首選區域或語言定製輸出,此方法可能很有用。如果您只對計算特定的小時、分鐘和秒數字感興趣,它可能不如先前的方法有效。

示例 4:使用持續時間除法的商和餘數進行轉換

您可以使用 divmod 函式分別計算以秒為單位的持續時間除以 3600(一小時中的秒數)和 60(一分鐘中的秒數)的商和餘數。

以下是實現示例:

import Foundation
func formatDuration(_ durationInSeconds: Int) -> String {
   let (hours, secondsAfterHours) = divmod(durationInSeconds, 3600)
   let (minutes, seconds) = divmod(secondsAfterHours, 60)
   return String(format: "%02d:%02d:%02d", hours, minutes, seconds)
}
func divmod(_ numerator: Int, _ denominator: Int) -> (quotient: Int, remainder: Int) {
   let quotient = numerator / denominator
   let remainder = numerator % denominator
   return (quotient, remainder)
}
let durationInSeconds = 3661
let formattedDuration = formatDuration(durationInSeconds)
print("Duration: \(formattedDuration)")

輸出

Duration: 01:01:01

formatDuration 函式接受 durationInSeconds 整數作為輸入,並輸出具有以下表示法的結構化文字:“hh:mm:ss”,其中 hh 代表小時數,mm 代表分鐘數,ss 代表秒數。

當兩個數字的分子和分母相除時,divmod 函式會生成一個包含商和餘數的元組。formatDuration 函式使用此函式來確定小時、分鐘和秒。

結論

總之,在 Swift 中有多種方法可以將表示以秒為單位的持續時間的整數轉換為小時、分鐘和秒。

一種方法是使用算術運算來計算小時、分鐘和秒的個數,然後將其格式化為字串。

另一種方法是使用 DateComponentsFormatter 類將持續時間格式化為包含小時、分鐘和秒的字串。

第三種方法是使用 divmod 函式分別計算以秒為單位的持續時間除以 3600 和 60 的商和餘數。

總的來說,最合適的方法取決於應用程式的具體需求。如果您只需要計算單個小時、分鐘和秒的值,則算術或 divmod 方法可能最合適。如果您需要將持續時間格式化為字串,則 DateComponentsFormatter 類可能更合適。

更新於:2023年5月4日

3K+ 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告