是否可以更改NSDate对象,使结果等同于NSCalendar.startOfDayForDate(date:)
?该方法仅适用于iOS 8及更高版本,但我正在寻找适用于iOS 7的功能。
我看过两种方法:
NSCalendar.dateFromComponents(comps:)
,如下所述:NSDate beginning of day and end of day。例如,像这样:
class func startOfDay(date: NSDate, calendar: NSCalendar) -> NSDate {
if #available(iOS 8, *) {
return calendar.startOfDayForDate(date)
} else {
let dateComponents = calendar.components([.Year, .Month, .Day], fromDate: date)
return calendar.dateFromComponents(dateComponents)!
}
}
NSDateFormatter.dateFromString(string:)
通过
stringFromDate(date:)
,即将NSDate对象转换为没有时间的字符串,然后将其转换回NSDate对象。这两种方法的问题是它们返回一个可选的NSDate。我不愿意隐式解开这个,我宁愿避免改变调用这些方法的方法的返回类型。
答案 0 :(得分:2)
我认为calendar.components()
方法返回一个可选项,因为理论上你可以输入不创建有效日期的组件,比如2000-02-30。如果,在您的情况下,组件已经来自有效日期,我不会不愿意隐式解包可选项。