一年中的NSDate(快速)

时间:2015-02-25 06:48:50

标签: ios swift nsdate

如何使用swift找到年份的天数?是否有一种我没有看到的简单方法,或者我必须找到从1月1日到当前日期的秒数并除以一天中的秒数?

4 个答案:

答案 0 :(得分:38)

这是对How do you calculate the day of the year for a specific date in Objective-C?到Swift的答案的翻译。

Swift 2:

let date = NSDate() // now
let cal = NSCalendar.currentCalendar()
let day = cal.ordinalityOfUnit(.Day, inUnit: .Year, forDate: date)
print(day)

斯威夫特3:

let date = Date() // now
let cal = Calendar.current
let day = cal.ordinality(of: .day, in: .year, for: date)
print(day)

这一年的第一天为1,今天(2月25日)为56 = 31 + 25

  

...或者我必须找到从1月1日到当前日期的秒数   并除以一天中的秒数

这是一种错误的方法,因为一天没有固定的 秒数(从夏令时转换到夏令时)。

答案 1 :(得分:4)

完全没有!您所要做的就是使用NSCalendar来帮助您进行日历计算,如下所示:

let firstDayOfTheYear  = NSCalendar.currentCalendar().dateWithEra(1, year: NSCalendar.currentCalendar().component(.CalendarUnitYear, fromDate: NSDate()), month: 1, day: 1, hour: 0, minute: 0, second: 0, nanosecond: 0)!   // "Jan 1, 2015, 12:00 AM"

let daysFromJanFirst = NSCalendar.currentCalendar().components(.CalendarUnitDay, fromDate: firstDayOfTheYear, toDate: NSDate(), options: nil).day   // 55

let secondsFromJanFirst = NSCalendar.currentCalendar().components(.CalendarUnitSecond, fromDate: firstDayOfTheYear, toDate: NSDate(), options: nil).second   // 4,770,357

答案 2 :(得分:2)

Swift 3

extension Date {
    var dayOfYear: Int {
        return Calendar.current.ordinality(of: .day, in: .year, for: self)!
    }
}

使用

Date().dayOfYear

答案 3 :(得分:0)

您可以找到自您日期以来的天数:

let date = NSDate() // your date

let days = cal.ordinalityOfUnit(.CalendarUnitDay, inUnit: .CalendarUnitYear, forDate: date)

println(days)