使用 iPhone SDK 的给定年份的天数? [英] Number of days in given year using iPhone SDK?

查看:36
本文介绍了使用 iPhone SDK 的给定年份的天数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试获取当前年份的天数.

I'm trying to get the number of days in a current year.

当我在 天数上尝试解决方案时在当月使用 iPhone SDK?,并用 NSYearCalendarUnit 替换 NSMonthCalendarUnit,我仍然得到当月的天数.

When I try the solution on Number of days in the current month using iPhone SDK?, and replace NSMonthCalendarUnit by NSYearCalendarUnit, I still get the number of days for that month.

有人知道我应该怎么做吗?

Does anyone know how I should do this?

预先感谢您的帮助.

推荐答案

这是 Swift 2 中超级准确的 NSCalendar 扩展:

Here's a super accurate NSCalendar extension in Swift 2:

extension NSCalendar {
    func daysInYear(date: NSDate = NSDate()) -> Int? {
        let year = components([NSCalendarUnit.Year], fromDate: date).year
        return daysInYear(year)
    }

    func daysInYear(year: Int) -> Int? {
        guard let begin = lastDayOfYear(year - 1), end = lastDayOfYear(year) else { return nil }
        return components([NSCalendarUnit.Day], fromDate: begin, toDate: end, options: []).day
    }

    func lastDayOfYear(year: Int) -> NSDate? {
        let components = NSDateComponents()
        components.year = year
        guard let years = dateFromComponents(components) else { return nil }

        components.month = rangeOfUnit(NSCalendarUnit.Month, inUnit: NSCalendarUnit.Year, forDate: years).length
        guard let months = dateFromComponents(components) else { return nil }

        components.day = rangeOfUnit(NSCalendarUnit.Day, inUnit: NSCalendarUnit.Month, forDate: months).length

        return dateFromComponents(components)
    }
}

你可以这样使用它:

let calendar = NSCalendar.currentCalendar() // I'm using the Gregorian calendar
calendar.daysInYear()     // 365 (since it's currently 2015)
calendar.daysInYear(2016) // 366 (leap year!)

这是非常灵活的,因为我们不对日历的长度做任何假设:

This is super flexible since we don't assume anything about the length of the calendar:

let hebrew = NSCalendar(calendarIdentifier: NSCalendarIdentifierHebrew)
hebrew?.daysInYear(-7)   // 354
hebrew?.daysInYear(-100) // 384

享受.

这篇关于使用 iPhone SDK 的给定年份的天数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆