2011-04-05 50 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