swift - 一种返回两个日期之间的日期数组的方法 - Swift 3

标签 swift date calendar swift3

我正在尝试获取一个对象的时间戳和 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/

相关文章:

java - 如何将时间戳字符串转换为本地时间字符串?

swift - 更新栏按钮项目内的日期

android - 如何将日历数据存储在数据库中

arrays - 在 Swift 4 中使用 decodable 访问嵌入式 JSON

ios - Swift:继承 ViewController 并添加目标?

objective-c - SWRevealViewController 在超过 'snappoint' 打开时关闭

ruby-on-rails - Rails select_date表单名称

java - 我们可以在java中设置特定的时间吗

JavaScript 动态日历

ios - 在头文件中找不到桥接头