一年中的NSDate(快速)

Dan*_*alt 20 nsdate ios swift

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

Mar*_*n R 40

这是对如何计算Objective-C中特定日期的一年中某一天的答案的翻译到斯威夫特.

斯威夫特2:

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

斯威夫特3:

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

这给出1了今年的第一天和56 = 31 + 25今天(2月25日).

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

这将是一种错误的方法,因为一天没有固定的秒数(从夏令时过渡到夏令时).

  • @LeonardoSavioDabus:当然是(你可以为它写一个扩展名,SCNR :) - 我更喜欢答案中的多个简短陈述,因为它们更易读. (3认同)

Ada*_*aka 10

斯威夫特 3

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

使用喜欢

Date().dayOfYear
Run Code Online (Sandbox Code Playgroud)