获得一年中的某一天是很简单的,例如。

func dayOfYear(inputDate:NSDate) -> (Int) {
    let cal         = NSCalendar.currentCalendar()
    let returnDay   = cal.ordinalityOfUnit(.CalendarUnitDay, inUnit: .CalendarUnitYear, forDate: inputDate)
    return returnDay
}

但是你怎么做相反呢?显然,它只会在一天/一个月内返回。我可以很容易地写一个繁琐的程序,计算回来,但有没有一个聪明的方法?

最佳答案

是的,NSCalendar提供了一种将日历组件合并为单个日期对象的方法。看看我在操场上写的这个例子:

import UIKit
import Foundation

let inputDate: NSDate = NSDate()
let calendar = NSCalendar.currentCalendar()
let day = calendar.ordinalityOfUnit(.CalendarUnitDay, inUnit: .CalendarUnitYear, forDate: inputDate)

let components = NSDateComponents()
components.day = day

let date = calendar.dateFromComponents(components)

根据文件,
如果提供的组件不足以完全指定绝对时间,则日历将使用其选择的默认值。当信息不一致时,日历可能会忽略某些组件参数,或者该方法可能返回nil。忽略不必要的组件(例如,日期优先于工作日和工作日序号)。
此外,
请注意,一些计算可能需要较长的时间才能执行。
有关更多信息,请参见NSCalendar Class Reference

关于swift - 迄今为止的数字-Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31399513/

10-11 14:25