这是我的代码:
picker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0,40,0,0)];
picker.datePickerMode = UIDatePickerModeDateAndTime;
picker.minuteInterval = 5;
picker.minimumDate = [NSDate date];
好的,到这里为止一切正常。(图片:http: //img29.imageshack.us/img29/8277/snap1r.png)
DatePicker 中过去的日期全部显示为灰色。无法选择。分钟间隔为 5。
但是现在当我单击任何已经变灰的行时。DatePicker 的日期返回这一刻的时间。
例如:我在 DatePicker 上点击了“9”(已经过了时间) 现在系统时间是
22:27:57
DatePicker 返回的日期:(图片:http: //img42.imageshack.us/img42/2760/nslog.png)
2012-04-08 22:27
因为我的分钟间隔是5分钟,所以我不希望picker返回不能被5整除的值,这样会导致我的程序崩溃。
这是一个错误吗?或者这只是我的问题?谢谢!
------致g检查员(对不起,我的英语不是很好)
因为 Datepicker 的 minuteInterval 是 5。所以 DatePicker 的日期的返回值只返回可以除以 5 的分钟(等等 0, 5 , 10 , 15 .....)
而且我将属性 minimumDate 设置为 [NSDate date],这样用户就无法选择过去的日期。
但是现在用户单击过去的行(灰色),DatePicker 的日期返回当时的时间。
所以日期的分钟可以是任何值(0~60),但不是我希望的(0、5、10、15....)
我已经尽力解释了>“<请原谅。
给督察 g。
感谢您的代码,我突然意识到有一种很好的方法可以解决我的问题。但我不知道为什么,如果我使用你的代码会有一些问题。(我想这是关于时区)
但是我按照你的逻辑,重新写了一段代码,分享给大家:
unsigned unitFlags_ = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit;
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps_ = [gregorian components:unitFlags_ fromDate:[jRemindPicker date]];
NSInteger remainder = [comps_ minute] % 5;
NSLog(@"%i-%i-%i %i:%i", comps_.year, comps_.month, comps_.day, comps_.hour, comps_.minute);
if ( remainder ) {
/* My Own code /*
} else {
/* My Own Code /*
}
[gregorian release];