比较 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 来很好地格式化剩余时间。