iPhone XCode创建与日期相关的if语句

时间:2010-08-25 15:35:25

标签: iphone objective-c compare nsdate

所以我是开发用的新手,让我成为一个菜鸟。 我目前正在创建我的第一个iPhone应用程序,其中我有一个与网络视频服务何时启动相关的倒计时。 在倒计时下我有一个允许播放视频流的按钮,我想创建一个if语句,告诉应用程序引用iPhone当前日期,如果它超过发布日期,那么iPhone将启动视频流,如果用户在发布日期之前按下按钮我希望UIAlert View显示服务启动的日期,到目前为止,我已经有了这个。

- (IBAction)watchLive { 

    self.today = [NSDate date];
    NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];
    [dateformatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"];
    NSString *launchDay = [[NSString alloc] initWithString:@"11/26/2010 11:59:59"];
    NSDate *currentDate = [dateformatter dateFromString:launchDay];

    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    int unitFlags = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
    NSDateComponents *components = [gregorian components:unitFlags fromDate:today toDate:currentDate options:0];
    countdownLabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d:%02d", components.day, components.hour, components.minute, components.second ];

    if (today >= currentDate){

        UIAlertView*alert = [[UIAlertView alloc] initWithTitle:@"Coming Soon" message:@"Feed goes live Friday 26th November 12:00pm" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
        [alert show];
        [alert release];
    }       
    else {
        UIAlertView*alert =[[UIAlertView alloc] initWithTitle:@"Perfect" message:@"It Works" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
        [alert show];
        [alert release];        
    }    
}

我非常感谢任何帮助,因为我真的不确定自己的错误或应该采取的措施。

哦,是的,最后一件事,当我在模拟器和设备上运行应用程序时,它只是随机显示其中一条消息,我无法确定每条消息显示的原因,但不是日期!

谢谢你们! 菲尔

1 个答案:

答案 0 :(得分:3)

比较日期时,您应该使用NSDate的比较方法 您看到的行为是比较今天和currentDate

的内存地址的结果

更改

if (today >= currentDate)

if ([today timeIntervalSinceDate:currentDate] <= 0 ) // today is before launch

有关详细信息,请参阅NSDate Class Reference