如何比较Objective-C中的时间?

时间:2013-06-24 12:51:25

标签: objective-c

我正在制作一款水平游戏,我正在寻找一种比较2次的方法。 第一次是玩家需要完成关卡的时间,第二次是我选择的时间。如果第一次小于第二次你获得一颗星,如果它更高,你就不会得到一颗星。我在NSDates中存储了2次,如下面的代码所示。我使用NSComparisonResult来比较结果。我的问题是NSComparisonResult Result1 = 4294967295而不是NSOrderedDescending或类似的东西。

    NSDate *currentDate = [NSDate date];
    NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:self.startDate];
    NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];

    NSComparisonResult result1;
    NSComparisonResult result2;
    NSComparisonResult result3;
    // Create a date formatter
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"mm:ss.SSS"];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];

    //has three possible values: NSOrderedSame,NSOrderedDescending, NSOrderedAscending
    NSDate *level1ThreeStarRequirement = [dateFormatter dateFromString:@"00:01.500"];
    NSDate *level1TwoStarRequirement = [dateFormatter dateFromString:@"00:02.500"];
    NSDate *level1OneStarRequirement = [dateFormatter dateFromString:@"00:02.500"];

    result1 = [timerDate compare:level1ThreeStarRequirement]; // comparing two dates
    result2 = [timerDate compare:level1TwoStarRequirement];
    result3 = [timerDate compare:level1OneStarRequirement];
    if (result1 == NSOrderedAscending){
        self.star1.image = [UIImage imageNamed:@"star1.png"];
        self.star2.image = [UIImage imageNamed:@"star2.png"];
        self.star3.image = [UIImage imageNamed:@"star3.png"];
    }
    if (result2 == NSOrderedAscending){
        self.star1.image = [UIImage imageNamed:@"star1.png"];
        self.star2.image = [UIImage imageNamed:@"star2.png"];
        self.star3.image = [UIImage imageNamed:@"noStar.png"];

    }
    if (result3 == NSOrderedDescending){
        self.star1.image = [UIImage imageNamed:@"star1.png"];
        self.star2.image = [UIImage imageNamed:@"noStar.png"];
        self.star3.image = [UIImage imageNamed:@"noStar.png"];
    }

谢谢马蒂斯

1 个答案:

答案 0 :(得分:1)

为什么不使用NSDate

的内置函数之一来比较日期
– timeIntervalSinceDate:
– timeIntervalSinceNow
+ timeIntervalSinceReferenceDate
– timeIntervalSinceReferenceDate
– timeIntervalSince1970

这会在几秒钟内给你一个值。那么你的result1等不应该是一些错误的数字,你可以直接比较时间并按照那样排序