2012-04-27 190 views
0

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

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

如果我设置起始日期到25/04/2012和结束日期到24/04/2019和testDate到25/12/2013代码工作。但是,如果我将startDate设置为26/04/2000,并将endDate设置为24/04/2019,并将testDate设置为25/12/2013,则代码不起作用。怎么了?

+1

没有搜索带来什么呢? – vikingosegundo 2012-04-27 17:10:24

+0

是的,你正在比较对象地址。您必须使用该对象支持的比较方法。 – 2012-04-27 17:14:27

回答

2

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

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

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

  • 接收机和anotherDate是完全彼此相等, NSOrderedSame

  • 接收器比其他日期更晚,NSOrderedDescending

  • 接收器比另一个日期,NSOrderedAscending更早。

3

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

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