我确定我做错了,但我基本上想要创造类似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。这是为什么?提前谢谢。
答案 0 :(得分:1)
因为您的_dateFlags
仅包含小时和分钟。您应该将_dateFlags
设置为self.dateFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit
。