NSDateFormatter和时区问题?

saa*_*nib 19 iphone timezone objective-c nsdate nsdateformatter

我有一个时间在GMT的字符串,我想根据系统时区制作但它不能正常工作 -

NSLog(@"Time Str = %@",Time);

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy hh:mm a"];

[NSTimeZone resetSystemTimeZone];

NSLog(@"system time zone = %@",[NSTimeZone systemTimeZone]);

[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];

NSDate *date = [dateFormat dateFromString:Time];

[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
NSLog(@"date from string = %@",date);
NSLog(@"string from date = %@",[dateFormat stringFromDate:date]);
Run Code Online (Sandbox Code Playgroud)

控制台输出 -

////////////////////////////////////////////////// //////////////////////////////////////////////

Time Str = 09-12-2011 07:57 AM

系统时区=亚洲/加尔各答(IST)抵消19800

date from string = 2011-12-09 02:27:00 +0000

字符串从日期= 09-12-2011 07:57 AM

////////////////////////////////////////////////// //////////////////////////////////////////////

加尔各答距格林威治标准时间+5:30,因此日期时间应为1:27,但显示时间为02:27.此外,当我从这个日期拿出一个字符串时,它向我显示了我用来制作日期的相同刺痛,我希望根据系统时区更新字符串.

谢谢

Mat*_*uch 51

如果日期字符串是GMT,则无法使用系统时区从NSString创建NSDate.

替换第一次出现 [dateFormat setTimeZone:[NSTimeZone systemTimeZone]];

[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

  • 如果我希望我的应用程序在任何时区的任何地方工作,那么我该怎么办? (9认同)