ios - 如何获取当前/去年的天数

标签 ios swift nsdate

我想找出今年和去年的天数。我设法想出了这段代码,它将给我一个开始和结束日期。

然后我使用 NSDateComponents 获取今年的天数。但是我得到的是365,意思是从去年算起的天数。

如何正确获取去年和当年的天数?

 func numOfDaysInYear() {
        let calendar = NSCalendar.currentCalendar()
        var interval = NSTimeInterval(0)
        var startOfYear: NSDate?
        var endOfYear: NSDate!
        calendar.rangeOfUnit(.Year, startDate: &startOfYear, interval: &interval, forDate: NSDate())
        endOfYear = startOfYear?.dateByAddingTimeInterval(interval - 1)


        let comp = calendar.components(.Day, fromDate: startOfYear!, toDate: endOfYear, options: .MatchFirst)
        print(comp.day)
    }

最佳答案

 endOfYear = startOfYear?.dateByAddingTimeInterval(interval - 1)

给出当前年份的日期,以及它与 startOfYear 是 365 天 23 小时 59 秒,因此结果是 365。

你想要的是

let startOfNextYear = startOfYear!.dateByAddingTimeInterval(interval)
let comp = calendar.components(.Day, fromDate: startOfYear!, toDate: startOfNextYear, options: .MatchFirst)
print(comp.day)

它给出了 2016 年闰年的正确输出 366

要得到上一年的结果,只需替换当前数据 NSDate() 到“一年前”的日期:

calendar.dateByAddingUnit(.Year, value: -1, toDate: NSDate(), options: [])

关于ios - 如何获取当前/去年的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38229031/

相关文章:

ios - 动画自定义按钮 iOS Swift

ios - UITableView:如何调整包含自动换行标签的标题大小

ios - 尝试将 NSDate 转换为 Date 并收到警告

swift - 将长月份名称转换为 int

ios - 生成错误 Xcode 10 - 生成多个命令

ios - 为什么标签栏项目的角标(Badge)没有改变

ios - applicationWillEnterForeground 呈现一个 View Controller

ios - Quick and Nimble 测试

iphone - 比较相同日期/时间的两个 NSDates

ios - 设置包含 View Controller 的框架