如何仅使用日期的一部分制作if语句?

时间:2014-02-01 17:47:28

标签: ios if-statement nsdate

我从API获得了一个交易日期戳。格式为MM / dd / yyyy hh:mm:ss a(02/01/2014 11:41 23s AM)。

所以我想要做的是根据特定日期的差异为对象所在的交易标签的文本着色。

就我而言,某个日期是当前时间。

所以你可以在下面看到,我有一个if语句。但是我不希望它们是现在的样子,因为它限制了声明的灵活性。

我的问题是针对两种情况: 1)如何设置条件语句,如果transactionDate距离当前日期1小时,则datelabel.textcolor为红色,否则为绿色。

2)如果transactionDate不是同一天?

我无法确定如何实施这些条件。请让我知道在案例1和案例2中如何完成。

你可以看到我遇到的问题,声明是如此严格,我只能做出陈述,但它们太准确了,我想要更广泛/特定的保证金。

现在它是如此具体,如果我的目标是使一个小时之外的transactionDatetime,颜色textcolor绿色,我不能,因为任一日期字符串等于2/01/2014 10:00 43s AM的确切时间,或其他任何东西是不相等。

我想制作超过1小时不等的任何东西(颜色旁边的任何颜色)和1小时以下的任何东西(文字颜色为绿色)。

我可以照顾好一切,只需要帮助放松这个时间框架。

        NSNumber *timestamp = [payment objectForKey:@"transactionDatetime"];
        NSDateFormatter *df = [[NSDateFormatter alloc] init];
        [df setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];


        NSDate *date = [NSDate date];
        // format it
        NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
        [dateFormat setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];
        // convert it to a string
        NSString *dateString = [dateFormat stringFromDate:date];
        // free up memory
        [dateFormat release];
        //Try it
        NSLog(@"Todays date is = %@",dateString);



        if ([dateLabel.text isEqual:dateString]) {
            dateLabel.textColor = [UIColor colorWithRed:50/255.0f green:197/255.0f blue:0/255.0f alpha:1.0f];
        }
        else {
            dateLabel.textColor = [UIColor colorWithRed:68/255.0f green:140/255.0f blue:0/255.0f alpha:1.0f];
        }
        dateLabel.text = [df stringFromDate:[NSDate dateWithTimeIntervalSince1970:([timestamp floatValue]/1000)]];
        [df release];

1 个答案:

答案 0 :(得分:0)

我认为你想要使用的是NSDateComponents。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDateComponents_Class/Reference/Reference.html

所以,如果你想要工作日,你会做类似的事情:

NSDateComponents *weekdayComponents =
[gregorian components:NSWeekdayCalendarUnit fromDate:date];
int weekday = [weekdayComponents weekday];

所以对你的情况来说只是抓住时间!