我想從兩個日期中獲取格式為“m:ss”的字串。例如:“0:27”表示 27 秒的差異,“1:30”表示日期之間的 90 秒差異。
這是我正在使用的代碼:
import Foundation
let formatter = DateIntervalFormatter()
formatter.dateStyle = .none
formatter.timeStyle = .none
formatter.dateTemplate = "m:ss"
let startDate = Date()
let endDate = Date(timeInterval: 1, since: startDate)
let outputString = formatter.string(from: startDate, to: endDate)
print(outputString) //16:12 – 16:13 ???
// This is correct, but it doesn't actually calculate the interval.
但是我只列印了兩個帶破折號的日期。我怎樣才能真正讓 DateIntervalFormatter 計算出我想要的差異?
該代碼幾乎是來自 Apple 檔案的 1:1 示例,但具有自定義dateTemplate:https : //developer.apple.com/documentation/foundation/dateintervalformatter
uj5u.com熱心網友回復:
看來你真的想要 DateComponentsFormatter
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.minute, .second]
formatter.zeroFormattingBehavior = .pad
let startDate = Date()
let endDate = Date(timeInterval: 129, since: startDate)
let outputString = formatter.string(from: startDate, to: endDate)!
print(outputString)
如果分鐘 < 10,要洗掉前導零,您可以使用正則運算式
print(outputString.replacingOccurrences(of: "^0(\\d)", with: "$1", options: .regularExpression))
uj5u.com熱心網友回復:
我創建了這個不涉及 DateIntervalFormatter 的解決方案:
import Foundation
let minutes = 2
let seconds = 9
let formatted = String(format: "d:d", minutes, seconds)
print(formatted) // 2:09
看起來 DateIntervalFormatter 所做的只是將標準的 Date->String 轉換應用于兩個日期并在它們之間添加一個破折號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/360588.html
