【问题标题】:Finding the Date "IF Then Statement" [closed]查找日期“IF Then 语句”[关闭]
【发布时间】:2013-10-28 00:04:39
【问题描述】:

我有一个 iPhone 应用程序,它根据当前日期提供信息。例如,如果日期是 13 年 10 月 28 日,它会说今天的天气是.... 等等。我如何使用“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:&currentDate interval:NULL forDate:currentDate];
if ([currentDate isEqualToDate:date1]) {
    crowdLabel.text = [NSString stringWithFormat:@"%@", itsOk];
} else {
    crowdLabel.text = [NSString stringWithFormat:@"Not Working"];
}

【问题讨论】:

  • 您尝试过的代码在哪里?
  • 我尝试实现 TouchXML API,但不断收到很多错误,所以我放弃了。
  • SO 的重点是帮助解决错误。如果您需要有人为您编写此代码,那么您应该聘请程序员。
  • 类似if (todayWanted) { currentDate = [NSDate date]; }
  • 你不能使用== 来查看两个对象是否具有相同的值。使用isEqual: 或在这种情况下使用isEqualToDate:。还有,你为什么不用alloc/initdt1dt2

标签: ios date


【解决方案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

【讨论】:

  • 对不起,请查看我的原帖。我更新了它以显示现在发生的事情。
  • @RyanBurgess 好的,我更新了答案以解决您的代码问题
  • 非常感谢!请再次检查我的 OP...我仍然无法使其正常工作。
  • 好的,问题只是两个日期不相等。当前日期还包括时间信息,而date 不包括。我要添加一个关于它的注释。
  • 所以即使日期格式设置为 YY-MM-DD 它仍然显示小时、分钟和秒?这就是他们不相等的原因?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
相关资源
最近更新 更多