我使用的是一种网络API,它以"一天中的分钟"的格式发回时间。例如,它在凌晨3:12返回192(或24小时时为03:12)。
有没有办法将当天的分钟格式化为更好看的3:12 AM / 03:12?
谢谢!
答案 0 :(得分:4)
开始今天
let today = NSCalendar.currentCalendar().startOfDayForDate(NSDate())
添加192分钟
let date = NSCalendar.currentCalendar().dateByAddingUnit(.Minute, value: 192, toDate: today, options: [])
以短款打印
let formatter = NSDateFormatter()
formatter.timeStyle = .ShortStyle
print(formatter.stringFromDate(date!))
结果
3:12 AM
答案 1 :(得分:0)
实现这一目标最舒适的方法是使用NSDateComponentsFormatter
。您可以在输出中指定所需的单位(.Hour
,.Minute
)以及以秒为单位的时间间隔...有很多选项,值得您自己轻松浏览文档。
答案 2 :(得分:0)
以下是完整示例
let myDateComponent = NSDateComponents()
myDateComponent .year = 2016
myDateComponent .month = 1
myDateComponent .day = 11
myDateComponent .hour = totalMinutes / 60
myDateComponent .minute = totalMinutes % 60
myDateComponent .second = 0
let calendarDate = NSCalendar.currentCalendar().dateFromComponents(myDateComponent )!
/***** NSDateFormatter Part *****/
let formatter = NSDateFormatter()
formatter.dateStyle = NSDateFormatterStyle.ShortStyle
formatter.timeStyle = .MediumStyle
let dateString = formatter.stringFromDate(calendarDate)
答案 3 :(得分:0)
您并不需要深入了解所有日期组件内容。这很简单:
let totalMinutes = 192
let hours = (totalMinutes / 60)
let adjustedHours = hours % 12 == 0 ? 12 : hours
let minutes = totalMinutes % 60
let ampm = hours < 12 ? "AM" : "PM"
print("\(adjustedHours):\(minutes) \(ampm)") // Prints 3:12 AM
我实际上将它包装在一个函数中并考虑了军事时间因素:
func formatTimeFromMinutes(totalMinutes: Int, militaryTime: Bool) -> String {
let hours = totalMinutes / 60
let minutes = totalMinutes % 60
if militaryTime {
let prefix = (0..<10).contains(hours) ? "0" : ""
return "\(prefix)\(hours):\(minutes)"
} else {
let adjustedHours = hours % 12 == 0 ? 12 : hours
let ampm = hours < 12 ? "AM" : "PM"
return "\(adjustedHours):\(minutes) \(ampm)"
}
}