比较 Swift 中的小时数
Comparing Hours in Swift
在从数据库查询数据时,我收到进程开始和结束的小时数,在两个单独的字符串字段中,例如 start = "1100" 和 end = "+0200",这表明它的运行时间是从上午 11 点到凌晨 2 点。在 swift 中表示它的正确方法是什么,以便我可以确定从当前时间到流程结束时间的剩余时间量。
编辑:
如果我删除任何可能的 + 前缀并使用下面的代码,我发现了一种使用日期格式化程序的有趣方法,它似乎可以正常工作;但是,未设置日期是他们的解决方法吗?
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HHmm"
let date = dateFormatter.dateFromString("1340")
您可以使用 NSCalendar.currentCalendar().dateWithEra
从组件创建 NSDate
(还有其他类似的功能,请查看 NSCalendar
了解详情)。您将需要添加一些逻辑来确定凌晨 2 点是今天还是明天等等。
然后您可以比较两个 NSDate
日期。要确定距离结束还有多少时间,您可能会使用 NSDate
方法 timeIntervalSinceDate
。您还可以使用 NSDateComponentsFormatter
来很好地格式化剩余时间。
在从数据库查询数据时,我收到进程开始和结束的小时数,在两个单独的字符串字段中,例如 start = "1100" 和 end = "+0200",这表明它的运行时间是从上午 11 点到凌晨 2 点。在 swift 中表示它的正确方法是什么,以便我可以确定从当前时间到流程结束时间的剩余时间量。
编辑: 如果我删除任何可能的 + 前缀并使用下面的代码,我发现了一种使用日期格式化程序的有趣方法,它似乎可以正常工作;但是,未设置日期是他们的解决方法吗?
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "HHmm"
let date = dateFormatter.dateFromString("1340")
您可以使用 NSCalendar.currentCalendar().dateWithEra
从组件创建 NSDate
(还有其他类似的功能,请查看 NSCalendar
了解详情)。您将需要添加一些逻辑来确定凌晨 2 点是今天还是明天等等。
然后您可以比较两个 NSDate
日期。要确定距离结束还有多少时间,您可能会使用 NSDate
方法 timeIntervalSinceDate
。您还可以使用 NSDateComponentsFormatter
来很好地格式化剩余时间。