有没有办法按5
减去当前日期。如果今天是2008-12-9
,我需要在5天前获得日期。如果我们输出此日期,则日期应显示为2008-12-4
。
我如何以编程方式编码?或者是一个有用的教程
答案 0 :(得分:3)
始终使用NSCalendar和NSDateComponents进行日期计算。这将考虑到2月份29天的闰年,闰秒和夏令时变化等奇怪现象。
NSDate *date = [NSDate date]; // Using current date here
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
components.day = - 5; // Find date for 5 days ago
NSDate *newDate = [calendar dateByAddingComponents:components toDate:date options:0];
答案 1 :(得分:2)
NSDate *today = [NSDate date];
NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *offsetComponents = [[[NSDateComponents alloc] init] autorelease];
[offsetComponents setDays:-5];
NSDate *fiveDaysAgo = [gregorian dateByAddingComponents:offsetComponents toDate:today options:0];
将其转换为首选格式的字符串,请使用NSDateFormatter
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *formattedDateString = [dateFormatter stringFromDate:fiveDaysAgo];
答案 2 :(得分:-1)
这是一种蛮力的方式:
5
持续DAY
。DAY < 0
,请添加上个月的天数,并从1
中提取MONTH
。MONTH < 0
,请添加一年中的月份数并从1
中提取YEAR
。蛮力方法的优势在于它适用于所有语言。
答案 3 :(得分:-1)
#define SOME_HOUR -24*5
NSDate *today = [NSDate date];
NSDate *someDay = [NSDate dateWithTimeInterval:60*60*SOME_HOUR sinceDate:today];