如何将XML字符串拆分为元组?并将秒数转换为可读时间格式
Convert Total Seconds to HH:MM:SS Format for Your iOS UIAlert
Hey there! I’ve got a couple of straightforward, reliable ways to turn that raw total seconds value (like your 71102 example) into the clean HH:MM:SS format you need—perfect for displaying in your UIAlert later.
Method 1: Manual Calculation (Simple & Customizable)
This approach breaks down the total seconds into hours, minutes, and remaining seconds manually, then formats each part to ensure two-digit values (with leading zeros for single digits):
func formatSecondsToReadableTime(totalSeconds: Int) -> String { let hours = totalSeconds / 3600 let remainingAfterHours = totalSeconds % 3600 let minutes = remainingAfterHours / 60 let seconds = remainingAfterHours % 60 // Use String(format:) to pad single-digit values with leading zeros return String(format: "%02d:%02d:%02d", hours, minutes, seconds) } // Test with your value: 71102 seconds let formattedTime = formatSecondsToReadableTime(totalSeconds: 71102) // Outputs "19:45:02" (19*3600 + 45*60 + 2 = 71102)
Method 2: Use DateComponentsFormatter (System-Robust)
If you want to leverage Apple’s built-in APIs (great for consistency and edge cases), DateComponentsFormatter handles all the formatting heavy lifting automatically:
func formatSecondsWithSystemFormatter(totalSeconds: Int) -> String? { let formatter = DateComponentsFormatter() formatter.allowedUnits = [.hour, .minute, .second] formatter.unitsStyle = .positional // Enforces HH:MM:SS structure formatter.zeroFormattingBehavior = .pad // Adds leading zeros where needed return formatter.string(from: TimeInterval(totalSeconds)) } // Example usage in your UIAlert if let readableTime = formatSecondsWithSystemFormatter(totalSeconds: 71102) { let alert = UIAlertController(title: "Formatted Time", message: readableTime, preferredStyle: .alert) alert.addAction(UIAlertAction(title: "OK", style: .default)) present(alert, animated: true) }
Quick Tips:
- Both methods work for values over 24 hours (e.g., 90000 seconds becomes
25:00:00). - If your XML parsing returns seconds as a string, just convert it to an
Intfirst withInt(secondsString)before passing it to these functions.
Content of the question comes from stack exchange, question author PunkRa1n
相关产品推荐
相关产品推荐

