【发布时间】:2014-02-25 09:44:57
【问题描述】:
我从 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 小时以下的任何相等(textcolor 绿色)。
我可以处理所有事情,只是需要帮助放宽这个时间框架。
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];
【问题讨论】:
-
旁注 - 为什么要创建两个格式相同的日期格式化程序?只需创建并使用其中之一。
-
我试过没有用。会再试一次。
标签: ios if-statement nsdate