将选择器的日期与当前日期进行比较

时间:2010-11-03 11:42:47

标签: iphone objective-c

在我的日期选择器中,我可以从列表中选择一个日期。

我将它保存在我的字符串pickUpDateTime

 self.pickUpDateTime = [NSString stringWithString:[apiFormat stringFromDate:d]];

我遇到的问题是用户可以选择过去的日期。是否有某种方法可以获得当天的日期并在将来检查它?

我的字符串保存着这个2010-11-04的日期。 用户无法选择过去或当天的一天。

由于 -code

4 个答案:

答案 0 :(得分:1)

您可以通过以下方式获取当前日期和时间:

NSDate *now = [NSDate date];

将2个日期与:

进行比较
if ([d compare:now] == NSOrderedDescending) {
    // d is later than now
} else {
    // d is earlier than or equal to now
}

答案 1 :(得分:0)

如果您使用的是UIDatePicker,请设置

datePicker.minimumDate = [NSDate dateWithTimeIntervalSinceNow:24*3600];

e.g。允许明天开始的日期。从日期字符串“2010-11-04”返回到NSDate对象是可能的,但是很麻烦。 (但如果你坚持,请看NSDateFormatter

答案 2 :(得分:0)

上面的许多答案都提供了与NSDates一起工作的良好建议;如果你想要在一天的开始时说一些事情,例如“至少明天”而不是“至少24小时之后”。

一般而言:

  1. 获取NSCalendar的实例以表示公历
  2. 使用NSCalendar将NSDate转换为仅代表日,月和年的NSDateComponents
  3. 使用NSCalendar将NSDateComponents转换回NSDate
  4. 使用其他地方推荐的算术来将NSDate增加到将来一天,例如
  5. 我必须冲刺,但相关的方法是:

    • NSCalendar + currentCalendar或-initWithCalendarIdentifier:NSGregorianCalendar更加安全
    • NSCalendar -components:fromDate :(第一个参数是一个标志字段,指示您需要填写日期的哪些位)和-dateFromComponents:
    • NSDate -t​​imeIntervalSinceDate:

答案 3 :(得分:0)

 NSDateFormatter *df = [[NSDateFormatter alloc] init];
    df.dateStyle = NSDateFormatterMediumStyle;

   NSString *tempStr=[NSString stringWithFormat:@"%@",[df stringFromDate:datePicker.date]];

    txtBirth.text=tempStr;

    NSString *birthDate = tempStr;   
    NSDate *todayDate = [NSDate date];

    int time = [todayDate timeIntervalSinceDate:[df dateFromString:birthDate]];

    int numberOfDays = time/86400;

听到数据返回数据差异.....