2011-05-27 46 views
0

有問題。我正在與NSDate合作,我需要的是獲得23天前的日期。怎麼做 ?我試圖這樣的事情:iPhone NSDate setDay

 NSDate *date = [NSDate date];       
     NSCalendar *calendar = [NSCalendar currentCalendar]; 
     NSDateComponents *dateComponents = [calendar components: 
      (NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | 
      NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) 
      fromDate:date]; 
    [dateComponents setDay:-23]; 
    [dateComponents setHour:0]; 
    [dateComponents setMinute:0]; 
    [dateComponents setSecond:0]; 
    date = [calendar dateFromComponents:dateComponents]; 

但它不工作...任何想法?感謝..

回答

4

你需要做的是增加一個NSTimeInterval(以秒爲單位),以新初始化的NSDate實例。

下面的代碼應該做的伎倆:

NSDate* currentDate = [NSDate date]; 
NSTimeInterval = 60 * 60 * 24 * -23; 
NSDate* twentyThreeDaysAgo = [currentDate dateByAddingTimeInterval:timeInterval]; 

還要注意的是NSTimeInterval也只是雙(它更可讀的)一個typedef。

還有其他方法可以產生同樣的效果。一定要看看NSDate class reference

+0

把戲工作=)......非常感謝你! – Jim 2011-05-27 09:01:16

+0

沒問題! :-) – 2011-05-27 09:02:28

+0

@Jim按蜱滴答聲接受這個答案.. – xydev 2011-05-27 09:59:03

1

試試這個,

[dateComponents setDay:[dateComponents day] - 23]; 
+0

謝謝...這也行得通! – Jim 2011-05-27 09:05:57