检查时间间隔

时间:2017-11-07 18:11:16

标签: ios swift timer nstimeinterval

我正在编写一个应用程序,用于计算瑞典每小时工作的工资。在特定日期的某些TimeIntervals之间,有一个基本工资的插件。我启动计时器并将当前时间与开始时间进行比较以获得经过的时间。如何查看特定时间间隔内的经过时间(如第二天18:00-01:00或01.00-06.00)。到目前为止,我已尝试使用嵌套if检查,但我希望用户能够更改间隔时间。

1 个答案:

答案 0 :(得分:0)

假设endDatestartDate晚了不到24小时,您可以使用以下函数来确定两个日期之间经过的时间(以小时和分钟为单位)。

您可以使用Date.timeIntervalSince(_ date:)来确定两个Date个对象之间的差异,而不是您可以轻松地将差异转换为指定经过时间/分钟的更易读的格式。

func timeElapsed(from startDate:Date,to endDate:Date)->DateComponents{
    let secondsElapsed = Int(endDate.timeIntervalSince(startDate))
    let minutes = (secondsElapsed%3600)/60
    let hours = secondsElapsed/3600
    return DateComponents(hour: hours, minute: minutes)
}

当日/月也不同时,上述功能正常。

一些测试数据:

timeElapsed(from: Calendar.current.date(from: DateComponents(day: 1, hour: 18, minute: 0))!, to: Calendar.current.date(from: DateComponents(day: 2, hour: 6, minute: 14))!) //hour: 12 minute: 14 isLeapMonth: false 
timeElapsed(from: Calendar.current.date(from: DateComponents(day: 1, hour: 20, minute: 46))!, to: Calendar.current.date(from: DateComponents(day: 2, hour: 4, minute: 14))!) //hour: 7 minute: 28 isLeapMonth: false 
timeElapsed(from: Calendar.current.date(from: DateComponents(month: 1, day: 31, hour: 20, minute: 0))!, to: Calendar.current.date(from: DateComponents(month: 2, day: 1, hour: 4, minute: 0))!) //hour: 8 minute: 0 isLeapMonth: false 

如果您决定将来需要更多内容,则可以轻松修改该功能以返回更多DateComponents。如果两个日期之间的24小时差异可能更大,那么也可以轻松调整。