按下按钮,将日期减1

Muh*_*.HS 0 iphone nsdateformatter

我使用日期格式化程序字符串,以获取当前日期,如下所示:

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"EEEE / dd-MM-yyyy";
timeLabel.text = [dateFormatter stringFromDate:[NSDate date]];
Run Code Online (Sandbox Code Playgroud)

现在我需要在按下按钮时将日期减1,如果今天的日期是星期五/ 05-08-2011,那么按下按钮它应该显示星期四/ 04-08-2011.我怎样才能实现这一目标?

csa*_*ano 5

诀窍是使用时间间隔.该日期和时间编程指南有一些这方面的更多信息.

基本上,NSDate有一种方法允许您向当前日期添加时间间隔.

- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
Run Code Online (Sandbox Code Playgroud)

为了获得昨天的日期,你想要获取今天的日期并从中减去24*60*60(一天中的总秒数).

NSDate *today = [NSDate date];
NSDate *yesterday = [today dateByAddingTimeInterval: -86400.0];
Run Code Online (Sandbox Code Playgroud)

这有帮助吗?


Ish*_*shu 5

像这样的代码(除了上面的答案)

- dateByAddingTimeInterval:在4.0及更高版本中可用,您可以使用- addTimeInterval较低版本(在4.0或更高版本中弃用).

-(IBAction)decrementDate
{
    NSString *dateForDecrement=timeLabel.text;
    NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    dateFormatter.dateFormat = @"EEEE / dd-MM-yyyy";
    NSDate *dateObjectForDecrement=[dateFormatter dateFromString:dateForDecrement];

    NSDate *dateAfterDecrement=[dateObjectForDecrement addTimeInterval:-(24*60*60)];
     timeLabel.text =  [dateFormatter stringFromDate:dateAfterDecrement];
}
Run Code Online (Sandbox Code Playgroud)