問題是,differenceDate
,儘管名稱,不是日期!這只是一個時間間隔 - 一個抽象的秒數。如果你想用小時,分鐘和秒來表達它,只需保持60除以剩餘。但請記住,這些不是真實小時和分鐘和秒鐘。
例子:
// make two dates, get the difference
let greg = Calendar(identifier: .gregorian)
let dc = DateComponents(calendar: greg,
year: 1954, month: 8, day: 10, hour: 3, minute: 0, second: 0)
let d1 = greg.date(from: dc)!
let d2 = Date()
let diff = d2.timeIntervalSince(d1)
// calculate hours, minutes, and seconds
var min = diff/60
let sec = diff.truncatingRemainder(dividingBy: 60)
let hr = min/60
min = min.truncatingRemainder(dividingBy: 60)
// format the output as a string
let nf = NumberFormatter()
nf.roundingMode = .floor
nf.minimumIntegerDigits = 2
let hrs = nf.string(from: hr as NSNumber)
let mins = nf.string(from: min as NSNumber)
nf.maximumFractionDigits = 3
let secs = nf.string(from: sec as NSNumber)
print(hrs! + ":" + mins! + ":" + secs!) // 545169:33:18.841
這給你你想要的格式和您毫秒。按照Rob的建議,您可以使用DateComponentsFormatter做同樣的事情,但您會得到完全相同的計算結果。
一個日期是引擎蓋下的秒數。但是秒數(毫秒)不是日期!您在這裏使用DateFormatter是完全不合適的。 – matt
我的業務規則要求我使用毫秒,所以我必須使用它。 double(currentTimeInMiliseconds實際上是一個持有毫秒數的變量,但我改變了它可以更好地解釋。 – user1079052
這與毫秒毫無關係。聽我說的是什麼。'differenceDate'不是日期,它不能被格式化作爲HH:mm:ss「使用日期格式化程序它不是日期不是日期日期 – matt