我正在尝试获取一个对象的时间戳和 future 30 天之间的日期数组。
我使用了下面的代码,但没有得到想要的结果,并且在尝试制作标题中描述的方法时遇到了问题。任何帮助都会很棒,谢谢。
var dates = [Date]()
func fetchDays() {
let cal = Calendar.current
var dateComponents = DateComponents()
dateComponents.year = 2017
dateComponents.month = 2
dateComponents.day = 12
guard let startDate = cal.date(from: dateComponents) else {
return }
var start = cal.startOfDay(for: startDate)
for _ in 0 ... 30 {
guard let daysBetween = cal.date(byAdding: .day, value: 1, to: startDate) else { return }
start = daysBetween
dates.append(start)
}
}
最佳答案
您将 1 添加到相同的开始日期,因此您的数组会一遍又一遍地填充相同的日期。只需将 1
替换为循环索引 + 1。
for i in 0 ... 30 {
if let newDate = cal.date(byAdding: .day, value: i + 1, to: startDate) {
dates.append(newDate)
}
}
而且您不需要 start
变量。
关于swift - 一种返回两个日期之间的日期数组的方法 - Swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42462847/