문제는 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'는 날짜가 아니며 "format"될 수 없습니다. A. 날짜 : – matt