两个日期之间的快速分钟间隔

丹尼尔RM

我想返回一个日期数组,其中每个日期是 startDate 和 endDate 之间的 15 分钟间隔

即:startDate time is2pm和 endDate time is 3pm,期望的结果将是一个包含以下[2:15pm, 2:30pm, 2:45pm]日期格式的日期的数组

我收集了一些骨架代码,但还没有达到我想要的结果。

private func getTimeIntervals(startTime: Date, endTime: Date) -> [Date] {
        let timeIntervals = []
        //get both times sinces refrenced date and divide by 60 to get minutes
        let startTimeMinutes = startTime.timeIntervalSinceReferenceDate/60
        let endTimeMinutes = endTime.timeIntervalSinceReferenceDate/60
        
        while(startTimeMinutes < endTimeMinutes) {
            // Add each 15 minute Date time interval into the timeIntervalsArray
        }

        return timeIntervals
    }

任何帮助将不胜感激,提前致谢。

邓肯

使用日历功能 date(byAdding:value:to:wrappingComponents:)

func dates(fromStart start: Date,
           toEnd end: Date,
           component: Calendar.Component,
           value: Int) -> [Date] {
    var result = [Date]()
    var working = start
    repeat {
        result.append(working)
        guard let new = Calendar.current.date(byAdding: component, value: value, to: working) else { return result }
        working = new
    } while working <= end
    return result
}

这是一个正常运行的操场中的代码:


func dates(fromStart start: Date,
           toEnd end: Date,
           component: Calendar.Component,
           value: Int) -> [Date] {
    var result = [Date]()
    var working = start
    repeat {
        result.append(working)
        guard let new = Calendar.current.date(byAdding: component, value: value, to: working) else { return result }
        working = new
    } while working <= end
    return result
}

extension Date {
    var localDate: String {return DateFormatter.localizedString(from: self, dateStyle: .medium, timeStyle: .medium)}
}

let threePMComponents = DateComponents(month: 6, day: 7, hour: 15)
guard let threePM = Calendar.current.date(from: threePMComponents) else {
    fatalError()
}

let sixPMComponents = DateComponents(month: 6, day: 7, hour: 18)
guard let sixPM = Calendar.current.date(from: sixPMComponents) else {
    fatalError()
}

print("Start time = \(threePM.localDate)")
print("End time = \(sixPM.localDate)")


let datesInRange = dates(fromStart: threePM, toEnd: sixPM, component: .minute, value: 15)
for item in datesInRange {
    print(item.localDate)
}

输出是:

Start time = Jun 7, 1 at 3:00:00 PM
End time = Jun 7, 1 at 6:00:00 PM
Jun 7, 1 at 3:00:00 PM
Jun 7, 1 at 3:15:00 PM
Jun 7, 1 at 3:30:00 PM
Jun 7, 1 at 3:45:00 PM
Jun 7, 1 at 4:00:00 PM
Jun 7, 1 at 4:15:00 PM
Jun 7, 1 at 4:30:00 PM
Jun 7, 1 at 4:45:00 PM
Jun 7, 1 at 5:00:00 PM
Jun 7, 1 at 5:15:00 PM
Jun 7, 1 at 5:30:00 PM
Jun 7, 1 at 5:45:00 PM
Jun 7, 1 at 6:00:00 PM

如果您希望该函数“对齐”到指定日历组件的下一个偶数间隔,则会更加复杂。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

两个日期时间之间的 15 分钟间隔数

如何计算两个日期之间30分钟的间隔?

在两个日期对象之间以 30 分钟间隔获取时间的 Javascript 编程方式

如何在两个日期之间快速获取30分钟的时隙数组

计算两个时间戳记之间的时间间隔(分钟)

两个时间戳之间的 30 分钟间隔数

JavaScript-获取两个日期之间的分钟

计算两个日期之间的分钟数

计算两个日期之间经过的分钟数的问题

MySQL SELECT在两个日期(不同的天数)之间的分钟

两个日期时间之间的SQL业务分钟

两个日期之间以分钟为单位的差异

以分钟为单位获取两个日期之间的差异

如何显示两个日期之间的小时和分钟

两个表之间的交集间隔日期

查找间隔为n的两个日期之间的行

检查两个日期之间的间隔天数(失败)

在VBA中创建两个日期之间的间隔列表

两个日期之间的时间间隔返回nil

不同单元格的两个日期之间的间隔

查找两个间隔之间的间隔

定时器快速关闭两个日期之间

两个Date对象之间的所有日期(快速)

快速计算两个日期之间的天数

在两个时间戳之间创建5分钟间隔

如何使用间隔 1 分钟将时间序列数据生成到两个日期之间的 Oracle PL/SQL 表中?

在Swift中获取两个日期(月/日/小时/分钟/分钟/秒)之间的差

以分钟为单位的两个日期(日期时间)之间的时差

如何获得天数,小时数,分钟数和秒数之间的两个日期之间的差异