2009-02-24 88 views
11

我在寻找两者并两两件事:如何检查星期几(即星期二,星期五?)并比较两个NSDates?

  1. 检查一个星期通过(根据星期几)
  2. 检查一天已经到了(根据日期)不见了

我不确定解决这个问题的最佳方法是什么,因为当比较两个NSDates(一个在1/1/09在21:30和另一个在1/2/09在00:30)时,我不能只看24小时是否已经过去,因为在这种情况下它没有。我可以通过从NSDate获得日期1/1/09来解决此问题,但我不确定如何根据我看到的文档和Google链接执行此操作。

对于另一个问题,我不知道如何知道星期几给它一个日期。我想如果1/1/09是星期二,星期一等...有什么图书馆让你计算这个?这显然需要考虑闰年和其他一些东西...也许有一个客观的C库呢?

感谢您的帮助!

回答

13

您可以使用NSDateComponents此:

unsigned units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; 
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *components = [gregorian components:units fromDate:date]; 

,那么你可以访问日期的各个部分是这样的:

[components year]; 
[components month]; 
[components day]; 

或者,您可以使用NSCalendar的建设新的NSDate对象dateFromComponents方法,并比较两个对象NSDate

30

可以使用NSCalendar类的components:fromData:消息让个别日期组件:

// Sunday = 1, Saturday = 7 
int weekday = [[[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:theDate] weekday]; 

要比较两个日期,只需使用compare:消息:

switch([date1 compare:date2]) 
{ 
case NSOrderedSame:  /* they are the same date */ break; 
case NSOrderedAscending: /* date1 precedes date2 */ break; 
case NSOrderedDescending: /* date2 precedes date1 */ break; 
} 
相关问题