如何在Swift中生成包含前7天、后7天共15个Date类型日期的数组
Swift 生成前后7天共15个日期数组的实现方案
不要直接用加减秒数的方式计算日期偏移,会存在夏令时、时区变更导致的误差,推荐使用系统Calendar提供的日期计算API
完整实现代码如下:
func setupDates() -> [Date] { var dateArray = [Date]() let calendar = Calendar.current // 获取7天前的起始日期 guard let startDate = calendar.date(byAdding: .day, value: -7, to: Date()) else { return dateArray } // 循环生成15个日期 for i in 0..<15 { if let targetDate = calendar.date(byAdding: .day, value: i, to: startDate) { dateArray.append(targetDate) } } return dateArray }
补充说明:
- 数组的第7位
dateArray[7]为当天日期,刚好满足「此前7天+当天+此后7天」的需求 - 如果需要仅保留日期、忽略时分秒,可以对当前日期先做零点对齐,将代码中的
Date()替换为calendar.startOfDay(for: Date())即可
内容的提问来源于stack exchange,提问作者Noah Iarrobino
相关产品推荐
相关产品推荐

