【问题标题】:Check time intervals检查时间间隔
【发布时间】:2017-11-07 18:11:15
【问题描述】:

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

【问题讨论】:

  • 您是否也只需要测量整小时或整分钟?
  • @DávidPásztor 分钟数

标签: ios swift timer nstimeinterval


【解决方案1】:

假设 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 小时差异可能更大,也可以轻松调整。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 2021-06-30
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 2011-03-12
    • 2016-06-17
    相关资源
    最近更新 更多