【问题标题】:Comparing dates in Cocoa比较可可中的日期
【发布时间】:2010-12-21 04:08:01
【问题描述】:

嗨,我想知道如何获取当前日期? 我想将当前日期与我使用以下代码从 plist 文件中获取的日期进行比较。

NSDate *expDate = [licenseDictionary objectForKey:@"Expires"];

使用以下代码进行比较

if([curDate compare:expDate] == NSOrderedAscending )

但它不起作用。谁能帮帮我。

【问题讨论】:

  • 如果您能告诉我们如何它“不工作”,这将使那些试图帮助您的人更轻松。
  • 基于上述陈述,我想执行一些操作。但我面临的问题是它既不是在 if not else 部分之后执行代码。

标签: objective-c cocoa nsdate


【解决方案1】:

为了教别人如何钓鱼而不仅仅是喂他:

看看Date and Time Programming Guide.。文档中的编程指南是您尝试理解某个主题的第一站。它们提供了可以做什么的概述,并包含有用的示例代码。

这些指南还包含指向所使用的特定类的文档的链接。在这种情况下,NSDate Class Referencecreating datescomparing dates 上有部分。

编辑

要回答您对此不起作用的评论,我认为问题可能是您尚未创建作为 NSDate 存储在字典中的对象。再次。查看creating dates 文档。会是这样的

NSDate *expiryDate = [NSDate dateWithNaturalLanguageString:@"31/01/10"];

但这只是一个例子,还有其他设置日期字符串的方法。

【讨论】:

  • 您可以将日期对象存储在属性列表中,只要您不使用 OpenStep 格式。所以提问者不需要从一个字符串中重构它,因为他们不应该把它作为一个字符串放在 plist 中。
  • 对不起,我就是这个意思。 OP 应该直接将日期对象存储在字典中,我只是想举例说明他如何创建此日期,因为问题是询问如何创建日期。
  • 我正在创建一个 plist 形式的许可证文件。在该 plist 中,在“Expires”键下,我添加了 2009 年 11 月 26 日之类的日期作为该键的值。在验证代码中,我将该值分配给 NSDate 对象作为 NSDate *expDate = [licenseDictionary objectForKey:@"Expires"];使用 expDate 的这个值比较当前日期。没有错误出现,但我仍然没有得到想要的结果
  • 您是否将 plist 文件中的到期日期存储为适当的 NSDate 对象?
  • 我将其存储在 2009 年 11 月 26 日。这是 NSDate 对象类型吗?
【解决方案2】:

要获取当前日期,只需使用:

NSDate * today = [NSDate date];

与另一个日期比较:

if ([today compare:expirationDate] == NSOrderedAscending)
{
    // today's date is before the expiration date
}

【讨论】:

  • 谢谢詹姆斯。我已经尝试过这个,但在我的情况下仍然无法正常工作。对于到期日期,日期格式应该是什么?
  • 您是在字典中存储 NSDate 还是日期的字符串表示形式?
  • 我正在创建一个 plist 形式的许可证文件。在该 plist 中,在“Expires”键下,我添加了 2009 年 11 月 26 日之类的日期作为该键的值。在验证代码中,我将该值分配给 NSDate 对象作为 NSDate *expDate = [licenseDictionary objectForKey:@"Expires"];使用 expDate 的这个值比较当前日期。没有错误出现,但我仍然没有得到想要的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多