按下按钮,将日期减1

时间:2011-08-05 04:49:53

标签: iphone nsdateformatter

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

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"EEEE / dd-MM-yyyy";
timeLabel.text = [dateFormatter stringFromDate:[NSDate date]];

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

2 个答案:

答案 0 :(得分:5)

诀窍是使用时间间隔。 Date and Time Programming Guide有更多相关信息。

基本上,NSDate有一种方法可以让你在当前日期添加时间间隔。

- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds

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

NSDate *today = [NSDate date];
NSDate *yesterday = [today dateByAddingTimeInterval: -86400.0];

这有帮助吗?

答案 1 :(得分:5)

这样的代码(除上述答案外)

4.0及更高版本中提供的

- dateByAddingTimeInterval:,您可以使用- 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];
}