iPhone中日期和时间与之前的比较?

时间:2012-11-06 05:08:33

标签: iphone objective-c nsdate

  

可能重复:
  How to compare two NSDate objects in objective C

1 --->我是Objective-C的新手并且坚持到了某一点。概念是预订时段/预订类型,这意味着无法在之前和之前的日期预订时段。我必须将今天的日期与特定日期进行比较,可能比今天的日期还要大于今天的日期。

为了获得当前日期,我已经这样做了:

NSDate *date = [NSDate date];
 NSDateFormatter *formatter = nil;
 formatter=[[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];

我在UItextField中有一个与今天日期进行比较的日期,该日期也是yyyy-MM-dd格式。

现在我必须将今天的日期与textField日期进行比较。但是我没有得到它..

if(textfielddate<currentdate)
{
   NSLog(@"You cannot book a slot at past date);
}

但是这里没有比较..

2 ---&GT;我需要将24小时格式的时间与24小时格式的当前时间进行比较..

我在字符串变量12:00,11:00,15:00等中有特定的时间。现在我需要将它与24小时格式的当前时间进行比较。

if([time <= currenttime] && [textFielddate==currentdate])
{
    NSLog(@"You cannot book a slot at past time ");
}

我该怎么做?

2 个答案:

答案 0 :(得分:1)

BEst方式是使用NSCompariosnResult

[date1 compare:date2];

然后检查是升序还是降序或等于。

此致 迪帕克

答案 1 :(得分:1)

用于检查在UITextField中输入的日期是否为先前。 您可以使用在文本字段中输入的值创建新日期。假设输入的值是2012年11月6日,那么从该文本字段开始,您必须以编程方式以整数形式获取日,月和年组件。 在整数中获得小时,分钟和秒数,以便您需要检查它是否是之前的时间。使用以下方法创建所需时间的日期:

    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setDay:iDay];
    [comps setMonth:iMonth];
    [comps setYear:iYear];
    [comps setHour:iHour];
    [comps setMinute:iMinutes];
    [comps setSecond:iSeconds];

    NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate *dateToCheck = [gregorian dateFromComponents:comps];
    [comps release];

创建日期后,您可以使用以下方式检查日期是否为之前的日期:

    double timestamp = [dateToCheck timeIntervalSinceDate:[NSDate date]];
    if(timestamp < 0)
    {
        // The date is previous one
    }