我正在编写一个应用程序,用于计算瑞典每小时工作的工资。在特定日期的某些TimeIntervals之间,有一个基本工资的插件。我启动计时器并将当前时间与开始时间进行比较以获得经过的时间。如何查看特定时间间隔内的经过时间(如第二天18:00-01:00或01.00-06.00)。到目前为止,我已尝试使用嵌套if检查,但我希望用户能够更改间隔时间。
答案 0 :(得分:0)
假设endDate
比startDate
晚了不到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小时差异可能更大,那么也可以轻松调整。