2011-04-05 46 views
1

我必須制定一個日期dateComponents:NSCalendar dateWithComponents出現誤導日期

int year; 
int month; 
int day; 
int hour; 
int minute; 
int second; 
NSCalendar *calendar; 
NSDate *actualDate; 
NSDate *itemDate; 
NSDateComponents *dateComps; 
NSDateFormatter *dateFormatter; 
UILocalNotification *sveglia; 

actualDate = [NSDate date]; 
calendar = [[NSCalendar currentCalendar] copy]; 
dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[calendar timeZone]]; 
[dateFormatter setDateFormat:@"yyyy"]; 
year = [[dateFormatter stringFromDate:actualDate] intValue]; 
[dateFormatter setDateFormat:@"MM"]; 
month = [[dateFormatter stringFromDate:actualDate] intValue]; 
[dateFormatter setDateFormat:@"dd"]; 
day = [[dateFormatter stringFromDate:actualDate] intValue]; 
[dateFormatter setDateFormat:@"HH"]; 
hour = [[dateFormatter stringFromDate:actualDate] intValue]; 
[dateFormatter setDateFormat:@"mm"]; 
minute = [[dateFormatter stringFromDate:actualDate] intValue]; 
[dateFormatter setDateFormat:@"ss"]; 
second = [[dateFormatter stringFromDate:actualDate] intValue]; 
dateComps = [[NSDateComponents alloc] init]; 
[dateComps setTimeZone:[calendar timeZone]]; 
[dateComps setDay:day]; 
[dateComps setMonth:month]; 
[dateComps setYear:year]; 
[dateComps setHour:hour]; 
[dateComps setMinute:minute]; 
// Obtaining date from components. 
itemDate = [calendar dateFromComponents:dateComps]; 
NSLog(@"ItemDate: %@", itemDate); 

日曆具有正確的時區,日期的所有組件都是權利。那麼, 無論我做什麼,itemDate對象都有格林威治時區(+0000)。我應該如何解決這個問題?

回答

2

解決方案自從日期正確的那一刻起,問題就不存在了,NSDate描述始終以GMT時間輸出。 要查看正確的格式,您應該使用descriptionWithLocale,請檢查此文檔。

Source

+0

,如果你解決它,不要忘記,以紀念你的問題的回答! – Ermiar 2011-04-06 09:29:08

+0

我會,但我不能明天:) – IssamTP 2011-04-06 10:14:38