我有一个iPhone应用程序,它根据当前日期提供信息。例如,如果日期是10/28/13,它会说今天的天气是....等。如何使用“If-Then”语句查找当前日期?或者是否有另一种更好的方法来自动查找日期和调整应用程序的显示?
我尝试使用谷歌日历API实现这一点,但无法实现这一点。
非常感谢!这是我在iOS上的第二个应用程序,所以我需要很多帮助!谢谢!
编辑以防万一有人以后需要这个,这就是我最终为我工作的原因
NSDateFormatter *df= [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *date1 = [df dateFromString:@"2013-10-27"];
NSDate *date2 = [df dateFromString:@"2013-10-28"];
NSDate *currentDate = [NSDate date];
[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit startDate:&date1 interval:NULL forDate:date1];
[[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit startDate:¤tDate interval:NULL forDate:currentDate];
if ([currentDate isEqualToDate:date1]) {
crowdLabel.text = [NSString stringWithFormat:@"%@", itsOk];
} else {
crowdLabel.text = [NSString stringWithFormat:@"Not Working"];
}
答案 0 :(得分:1)
[NSDate date]
将返回当前日期。然后,您可以通过配置和使用NSDateFormatter
的实例来显示您喜欢的格式的日期。
Apple的Data Formatting Guide是一个很好的参考。
好的,你的代码中有几个错误,让我们通过它们
NSDate *dt1 = [[NSDate alloc] init];
NSDate *dt2 = [[NSDate alloc] init];
考虑到您在初始化后立即分配这两个变量,alloc
/ init
没用,只需执行
NSDate *date1 = [df dateFromString:@"2013-10-27"];
NSDate *date2 = [df dateFromString:@"2013-10-28"];
另外
NSDate *currentDate = [[NSDate date] init];
错了。 date
返回已初始化的对象。在其上调用init
是未定义的行为。只是做
NSDate *currentDate = [NSDate date];
最后,最重要的是,您无法比较日期
currentDate == dt1
==
比较指针,即您正在比较对象标识而不是对象相等。如果要检查两个NSDate
对象是否代表相同的日期,请使用
[currentDate isEqualToDate:date1]
请注意,这将比较包含的完整日期和时间信息。如果您只想查看日期部分,可以参考以下问题:iOS: Compare two NSDate-s without time portion