在Swift中操纵NSDates

时间:2015-07-30 18:34:05

标签: xcode macos swift

我试图操纵Swift中的Date。我想要的是将实际日期的小时,分​​钟和秒设置为零。

func getDate() -> (NSDate){
    let date: NSDate = NSDate()

    var components = NSDateComponents()
    components.setValue(0, forComponent: NSCalendarUnit.CalendarUnitHour);
    components.setValue(0, forComponent: NSCalendarUnit.CalendarUnitMinute);
    components.setValue(0, forComponent: NSCalendarUnit.CalendarUnitSecond);

    let expirationDate = NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: date, options: NSCalendarOptions(rawValue: 0))
    return expirationDate!
}

这是我的代码如此战争,但它不起作用。任何提示? 输入将是" 2015-07-30 18:31:08 + 0000" outpout应该是" 2015-07-30 00:00:00 + 0000"

2 个答案:

答案 0 :(得分:2)

有一种NSCalendar方法可以完成您将要完成的任务(10.9及更高版本)

func getDate() -> NSDate {
  return NSCalendar.currentCalendar().startOfDayForDate(NSDate())
}

明天开始,你可以使用这个

let today = getDate()

let addOneDay = NSDateComponents()
addOneDay.day = 1
let tomorrow = NSCalendar.currentCalendar().dateByAddingComponents(addOneDay, toDate:today, options:NSCalendarOptions())!

答案 1 :(得分:1)

以下是您的需求(特别是components:fromDate:来电):

func getDate() -> NSDate {
    let date: NSDate = NSDate()
    let calendar = NSCalendar.currentCalendar()

    var components = calendar.components(NSCalendarUnit.CalendarUnitDay | NSCalendarUnit.CalendarUnitMonth | NSCalendarUnit.CalendarUnitYear, fromDate: date)

    return calendar.dateFromComponents(components)!
}

此调用适用于iOS 2.0之后的任何iOS系统,因此兼容性应该不是问题。