开发者

iPhone NSDate setDay

Have a question. I'm working with NSDate and what i need is to get date that was 23 day before. How to do that ? I tried to to something like this:

        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];

But its not works...ANy ideas ? tha开发者_StackOverflow中文版nks..


What you need to do is add an NSTimeInterval (which is in seconds) to a newly initialized NSDate instance.

The following code should do the trick:

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

Also note that NSTimeInterval is also just a typedef for a double (it's more readable).

There are alternative ways of producing the same effect. Be sure to check out the NSDate class reference.


Try this,

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜