手動計算 minutes = seconds/60 會導致 61 分鐘顯示為 01:61:01 而非 02:01:01。
- (NSString *)formatSeconds:(NSInteger)totalSeconds {
NSDate *start = [NSDate dateWithTimeIntervalSince1970:0]; // 1970-01-01 00:00:00 UTC
NSDate *end = [start dateByAddingTimeInterval:totalSeconds];
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *comp = [cal components:NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond
fromDate:start toDate:end options:0];
return [NSString stringWithFormat:@"%02ld:%02ld:%02ld",
(long)comp.hour, (long)comp.minute, (long)comp.second];
}
func formatSeconds(_ total: Int) -> String {
let hours = total / 3600
let minutes = (total % 3600) / 60
let seconds = total % 60
return String(format: "%02d:%02d:%02d", hours, minutes, seconds)
}
// 記錄開始時間
var startDate: Date?
func startTimer() {
startDate = Date()
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in
self.updateLabel()
}
}
func updateLabel() {
guard let start = startDate else { return }
let elapsed = Int(Date().timeIntervalSince(start))
label.text = formatSeconds(elapsed)
}