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!
}

对不起,因为我的英语不是很好。我的问题不是我不能在今天之前选择日期。。请等我,我会编辑主要帖子的。对此我很抱歉。请看我的编辑,如果问题是你不能选择未来的日期。你好,我画了一张图,看看你是否能清楚地理解:谢谢澄清。希望你能看到我的照片!最后编辑:是的,很抱歉回复太慢。这两天我有点忙。很抱歉,因为我的英语不是很好。我的问题不是我不能在今天之前选择日期。。请等我,我会编辑主要帖子的。对此我很抱歉。请看我的编辑,如果问题是你不能选择未来的日期。你好,我画了一张图,看看你是否能清楚地理解:谢谢澄清。希望你能看到我的照片!最后编辑:是的,很抱歉回复太慢。这两天我有点忙。