Ios5 一个数据采集器错误
这是我的密码:Ios5 一个数据采集器错误,ios5,xcode4,uidatepicker,Ios5,Xcode4,Uidatepicker,这是我的密码: picker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0,40,0,0)]; picker.datePickerMode = UIDatePickerModeDateAndTime; picker.minuteInterval = 5; picker.minimumDate = [NSDate date]; 好的,在这里之前一切正常。图片: 日期选择器中过去的日子都变灰了。无法选择它。 每分钟间隔5分钟 但现在,当我单击
picker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0,40,0,0)];
picker.datePickerMode = UIDatePickerModeDateAndTime;
picker.minuteInterval = 5;
picker.minimumDate = [NSDate date];
好的,在这里之前一切正常。图片:
日期选择器中过去的日子都变灰了。无法选择它。
每分钟间隔5分钟
但现在,当我单击任何已灰显的行时。date of DatePicker返回此时的时间
例如:我在DatePicker上点击了9,时间已经过去了
现在是系统时间
22:27:57
日期选择器返回的日期:Image:
因为我的分钟间隔是5分钟,所以我不希望选择器返回不能除以5的值,这将导致我的程序崩溃
这是虫子吗?或者这只是我的问题?
谢谢
---对不起,我的英语不是很好
因为Datepicker的分钟间隔是5。所以DatePicker的date的返回值只返回可以除以5的分钟数。0,5,10,15
我还将属性minimumDate设置为[NSDate date],这样用户就不能选择过去的日期
但现在,用户单击过去灰显的行时,日期选择器的日期返回当时的时间
所以日期的分钟可以是任何值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];
您对选择日期/时间问题的描述有点不清楚,所以您可以澄清一下吗?提供一个简短的放映 在任何情况下,听起来您都无法选择今天之前的日期,因此您的错误在这一行:
picker.minimumDate = [NSDate date];
您正在将最小可选择日期设置为当前日期和时间,因为[NSDate date]会返回该日期和时间
删除该行,您应该能够选择您想要的任何日期/时间
编辑
如果问题是以后无法选择日期,请尝试设置:
picker.maximumDate = [NSDate distantFuture];
使用现有的最小值和新的最大值,可选择日期的范围将设置为介于今天和之后很长一段时间之间
第二次编辑
谢谢你的澄清!我现在明白问题所在了。当您收到更改日期的用户的回调时,您必须适当地向上或向下取整。然后,您可以在该点使用舍入时间,或通过setDate:animated手动将选择器日期/时间设置为舍入值:
例如:
-(IBAction) pickerValueChanged:(id)selector_
{
UIDatePicker* picker = (UIDatePicker*) selector_;
// get the minutes from the picker
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:picker.date];
NSInteger minutes = [components minute];
// check if the minutes should be rounded
NSInteger remainder = minutes % 5;
if(remainder)
{
minutes += 5 - remainder;
[components setMinute:minutes];
picker.date = [calendar dateFromComponents:components];
}
// now picker.date is "safe" to use!
}
您对选择日期/时间问题的描述有点不清楚,所以您可以澄清一下吗?提供一个简短的放映 在任何情况下,听起来您都无法选择今天之前的日期,因此您的错误在这一行:
picker.minimumDate = [NSDate date];
您正在将最小可选择日期设置为当前日期和时间,因为[NSDate date]会返回该日期和时间
删除该行,您应该能够选择您想要的任何日期/时间
编辑
如果问题是以后无法选择日期,请尝试设置:
picker.maximumDate = [NSDate distantFuture];
使用现有的最小值和新的最大值,可选择日期的范围将设置为介于今天和之后很长一段时间之间
第二次编辑
谢谢你的澄清!我现在明白问题所在了。当您收到更改日期的用户的回调时,您必须适当地向上或向下取整。然后,您可以在该点使用舍入时间,或通过setDate:animated手动将选择器日期/时间设置为舍入值:
例如:
-(IBAction) pickerValueChanged:(id)selector_
{
UIDatePicker* picker = (UIDatePicker*) selector_;
// get the minutes from the picker
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:picker.date];
NSInteger minutes = [components minute];
// check if the minutes should be rounded
NSInteger remainder = minutes % 5;
if(remainder)
{
minutes += 5 - remainder;
[components setMinute:minutes];
picker.date = [calendar dateFromComponents:components];
}
// now picker.date is "safe" to use!
}
对不起,因为我的英语不是很好。我的问题不是我不能在今天之前选择日期。。请等我,我会编辑主要帖子的。对此我很抱歉。请看我的编辑,如果问题是你不能选择未来的日期。你好,我画了一张图,看看你是否能清楚地理解:谢谢澄清。希望你能看到我的照片!最后编辑:是的,很抱歉回复太慢。这两天我有点忙。很抱歉,因为我的英语不是很好。我的问题不是我不能在今天之前选择日期。。请等我,我会编辑主要帖子的。对此我很抱歉。请看我的编辑,如果问题是你不能选择未来的日期。你好,我画了一张图,看看你是否能清楚地理解:谢谢澄清。希望你能看到我的照片!最后编辑:是的,很抱歉回复太慢。这两天我有点忙。