2013-03-28 120 views
4

目前我能夠通過使用下面的代碼如何根據當天日期獲取未來15天的日期?

NSDate* date = [NSDate date]; 
NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy-MM-dd"]; 
NSString* currentDateStr = [formatter stringFromDate:date]; 
NSLog(@"User's current Date:%@",currentDateStr); 

獲得iPhone的當前日期,但我想從當前日期起未來15天數日期,我怎麼能得到明白了嗎?

回答

6

試試這個:

NSCalendar* calendar = [[[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar] autorelease]; 
NSDateComponents* components = [[[NSDateComponents alloc] init] autorelease]; 
components.day = 15; 
NSDate* newDate = [calendar dateByAddingComponents: components toDate: self.date options: 0]; 
-2

有可能是一個更好的方法(和我在看這個問題,看看是否有),但是這是我目前使用:

+ (NSDate *)offsetFromDate:(NSDate *)fromDate withDays:(int)days 
{ 
    NSTimeInterval timeInterval = (days * 86400); 
    NSDate *date = [[NSDate alloc] initWithTimeInterval:timeInterval sinceDate:fromDate];  
    return date; 
} 

如果谷歌以秒爲單位,每天的數量,您將獲得價值86400

+1

這是一個很幼稚的解決方案在大多數情況下工作,但在一些其他情況下可怕的失敗。 – Sulthan

+0

請注意,世界上許多地區都有「夏令時」,因此有些日子會多一點或少一點。 –

+0

確實。日期組件方法是這樣做的正確方法。 – jrturton

-1

嘗試這樣的:

NSTimeInterval totalOffset = /*time to add - in seconds */ 
NSDate *today = [NSDate date]; 
NSDate *endWithTZ = [today dateByAddingTimeInterval:totalOffset]; 
+0

請注意,世界上許多地區都有「夏令時」,因此一秒鐘的時間不是固定的。 –

-2
NSLog(@"%@", [date dateByAddingTimeInterval:15*24*60*60]); 
+0

這是最簡單的解決方案 –

+0

請注意,世界上許多地區都有「夏令時」,因此有些日子會多出或少一小時。 –

+0

當一小時可以被添加或移除時,它在例如節省白天時失敗。 – Sulthan

1
NSDate *todayDate = [NSDate date]; 
NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; 
[dateComponents setDay:+15]; 
NSDate *afterfifteenDays = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:todayDate options:0]; 
NSLog(@"todayDate: %@", todayDate); 
NSLog(@"afterfifteenDays: %@", afterfifteenDays);