2015-12-10 80 views
0

我想在NSDate中存儲日期,但沒有得到正確的輸出。 編寫下面的代碼片段。無法在NSDate中存儲正確的日期

NSDate *firstDate = [NSDate dateWithYear:2015 month:12 day:1 ]; 

預計產量將2015-12-1 18:30:00 +0000。

但是,得到2015年11月30日18:30:00 +0000

忽略時間戳。

dateWithYear:月:日是一類方法是存在的第三方日曆對此我的方法的using.the代碼如下:

+ (NSDate *)dateWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day { 

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; 
NSDateComponents *components = [NSDate componentsWithYear:year month:month day:day]; 



return [calendar dateFromComponents:components]; 

}

return [calendar dateFromComponents:components]; 

+ (NSDateComponents *)componentsWithYear:(NSInteger)year month:(NSInteger)month day:(NSInteger)day { 

NSDateComponents *components = [[NSDateComponents alloc] init]; 
[components setYear:year]; 
[components setMonth:month]; 
[components setDay:day]; 

return components; 

}

在此先感謝。

+0

爲什麼會期望它是UTC時間下午6點30分?你怎麼得到*輸出*?我懷疑它只是在當地時區午夜創建一個日期。如果該時區在UTC + 05:30,那麼這將解釋您的輸出。 –

+0

喬恩忽略了時間。如何得到我給出的確切日期作爲輸入。我是否需要設置時區? – Ranbijay

+0

「忽略時間」毫無意義 - 這是價值的一部分,有效。一個'NSDate'只是一個即時的時間,並且您指定的代碼表示您指定日期的當前時區的午夜時間。你想要代表什麼確切的瞬間? ('dateWithYear'指定在哪裏?我在[documentation](https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/)中看不到它。 ) –

回答

0

有許多方法可以從數據的日期,

NSDateFormatter:

NSString *dateString = @"2015-12-01"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy-MM-dd"; 
NSDate *date1 = [dateFormatter dateFromString:dateString]; 

NSDateComponents:(你可以添加setSecond,setMinute,setHour特定時間)

NSDateComponents *dateComps = [[NSDateComponents alloc] init]; 
[dateComps setYear:2015]; 
[dateComps setMonth:12]; 
[dateComps setDay:1]; 
NSDate *date2 = [[NSCalendar currentCalendar] dateFromComponents:dateComps]; 
+0

是的,但結果與問題描述的不同? –

+0

@TomHarrington不是關於如何設置NSDate的問題? – enzo

+0

是的,但是如果你的代碼產生與問題中相同的結果,那不是一個答案。你的結果會不同嗎? –