我有以下代码:
self.formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:timeZone];
[formatter setDateFormat:@"YYYY-MM-dd hh:mm:ss a z"];
timeStampForCity = [formatter stringFromDate:[NSDate date]];
NSLog(@"%@", timeStampForCity);
updateDate = [formatter dateFromString:timeStampForCity];
NSLog(@"%@", updateDate);
NSLog(@"%@", timeStampForCity);
输出:
2011-08-01 10:05:50 PM EDT
但NSLog(@"%@", updateDate);
输出:
2011-08-02 02:05:50 +0000
我需要updateDate
显示当前时区的时间(例如,如第一个 NSLog() 输出中所示)。我该如何正确地做到这一点?
编辑 1
我也有这个代码:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit| NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSTimeZoneCalendarUnit;
NSDateComponents *dateComponents = [gregorian components:unitFlags fromDate:[NSDate date]];
[dateComponents setTimeZone:[NSTimeZone timeZoneWithName:cityNameFormatted]];
updateDate = [gregorian dateFromComponents:dateComponents];
[gregorian release];
但它显示的时区在许多地区都是关闭的。
提前感谢您的帮助。