1

可能重复:
如何比较目标 C 中的两个 NSDate 对象

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---> 我需要将 24 小时格式的时间与当前时间(也是 24 小时格式)进行比较。

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

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

我该怎么做?

4

2 回答 2

1

最好的方法是使用 NSCompariosnResult

[日期1比较:日期2];

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

问候迪帕克

于 2012-11-06T05:18:04.760 回答
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
    }
于 2012-11-06T06:18:49.620 回答