我有两个 Date
对象,我只想比较它们之间的时差,忽略日期。
会是这样的:
dt1 =(日期)2016-09-22 20:05:01 UTC
dt2 =(日期)2016-08-20 22:06:00 UTC
并且 dt1 和 dt2 之间的差异为 2 小时或 121 分钟。
Swift 中有我可以做到的功能吗?
最佳答案
您可以使用Calendar
提取DateComponents
,然后将其中一个的日、月、年与另一个的时、分、秒组合成另一个日期
对象。然后,您可以使用文档齐全的方法比较共享相同日期的两个 Date
对象。
例如,给定date1
和date2
,我们可以用date1
的日期计算date3
,但是时间日期 2
。然后我们可以将 date1
与这个新的 date3
进行比较:
let calendar = Calendar.current
let components2 = calendar.dateComponents([.hour, .minute, .second], from: date2)
let date3 = calendar.date(bySettingHour: components2.hour!, minute: components2.minute!, second: components2.second!, of: date1)!
然后,获取 date1
和 date3
之间的分钟数:
let minutes = calendar.dateComponents([.minute], from: date1, to: date3).minute!
或小时和分钟:
let difference = calendar.dateComponents([.hour, .minute], from: date1, to: date3)
let hours = difference.hour!
let minutes = difference.minute!
或者,如果您想向用户显示此内容,您通常会使用 DateComponentsFormatter
来获得漂亮的本地化字符串表示形式:
let formatter = DateComponentsFormatter()
formatter.unitsStyle = .full
formatter.allowedUnits = [.hour, .minute] // or [.minute]
let string = formatter.string(from: date1, to: date3)!
关于ios - 仅比较 Date 对象中的时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40062131/