从当前日期创建NSDate不正确

时间:2013-07-02 03:19:45

标签: ios nsdate

我确定我做错了,但我基本上想要创造类似Apple闹钟的东西。所以我有一个UIDatePicker只显示小时和分钟。我的计划是从UIDatePicker获取小时和分钟,然后为当前日期或下一个日期创建一个小时和分钟的UILocalNotification,具体取决于当天是否有闹钟。所以当我的视图加载时我尝试做的是:

[self.alarmsDatePicker addTarget:self action:@selector(datePickerDidSelect:) forControlEvents:UIControlEventValueChanged];
    [self.alarmsDatePicker setDate:[NSDate date]];

    // Get the current calendar
    self.calendar = [NSCalendar currentCalendar];
    self.dateFlags = NSHourCalendarUnit | NSMinuteCalendarUnit;

    // Get the time portion of the datePicker's date
    NSDateComponents *timeComponentsSelectedDate = [_calendar components:_dateFlags fromDate:self.alarmsDatePicker.date];
    NSDate *timeOnlySelectedDate = [_calendar dateFromComponents:timeComponentsSelectedDate];
    self.startDate = timeOnlySelectedDate;

当我单步执行代码时,我不明白,datePicker获取正确启动的当前时间。但是当我到达timeOnlySelectedDate时,日期是2001-01-01。这是为什么?提前谢谢。

1 个答案:

答案 0 :(得分:1)

因为您的_dateFlags仅包含小时和分钟。您应该将_dateFlags设置为self.dateFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit