【问题标题】:Comparing dates [duplicate]比较日期[重复]
【发布时间】:2012-04-27 17:07:57
【问题描述】:

在我的应用程序中,我需要在一个 if-else 循环中比较三个日期。我有开始日期、结束日期和测试日期。我要检查的是测试日期是否在开始日期和结束日期之间。

if (testDate >= startDate && testDate <= endDate) {

如果我将 startDate 设置为 25/04/2012 并将 endDate 设置为 24/04/2019 并将 testDate 设置为 25/12/2013,则代码有效。但是,如果我将 startDate 设置为 26/04/2000 并将 endDate 设置为 24/04/2019 并将 testDate 设置为 25/12/2013,则代码不起作用。怎么了?

【问题讨论】:

  • 搜索结果是什么?
  • 是的,您正在比较对象地址。您必须使用对象支持的比较方法。

标签: objective-c cocoa-touch if-statement nsdate


【解决方案1】:

您不能理智地将 Objective-C 对象与 C 中的任何布尔运算符进行比较。您将比较它们的地址,而不是它们的值。

查看NSDate 类的文档,特别是-compare: 方法。

【讨论】:

    【解决方案2】:

    日期可以这样比较。但是,您必须先调用timeIntervalSince1970 将日期转换为整数类型值。在这种情况下,它会为您提供NSTimeInterval 类型的数值。

    另一个选项是使用在NSDate 对象上调用的compare: 方法。

    在这种情况下,将一个日期与另一个日期进行比较将在类参考中给出详细的结果,如下所示:

    • receiver 和 anotherDate 完全相等, NSOrderedSame

    • 接收者在时间上晚于另一个日期,NSOrderedDescending

    • 接收者在时间上早于另一个日期,NSOrderedAscending。

    【讨论】:

      猜你喜欢
      • 2011-02-14
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2012-06-25
      • 2018-04-26
      • 2015-01-01
      相关资源
      最近更新 更多