我使用日期格式化程序字符串以获取当前日期,如下所示:
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。 我怎样才能做到这一点?
答案 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];
}