NSDate今年的一天(迅速)

今年的日子怎么可能迅速find? 有没有简单的方法,我没有看到,或者我必须find从1月1日到当前date秒数除以一秒钟的一天?

这是如何计算Objective-C中特定date的一年中的哪一天的答案的翻译? 迅速。

Swift 2:

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

Swift 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日到当前date的秒数,再除以一天中的秒数

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

一点也不 !!! 所有你需要做的就是使用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 

Swift 3

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

使用像

 Date().dayOfYear 

你可以find自你的date以来的天数,如下所示:

 let date = NSDate() // your date let days = cal.ordinalityOfUnit(.CalendarUnitDay, inUnit: .CalendarUnitYear, forDate: date) println(days)