0

我正在从我的服务器解析 JSON,其中一个值是这样的日期:2013-01-21 18:22:35 +00000

我的问题是如何将此日期转换为当地时间,例如2013-01-21 12:22:35 -0600

我需要将日期转换为其他格式吗?

谢谢!

编辑。

使用@Gabriele Petronella 解决方案:

NSString * yourJSONString = @"2013-01-21 18:22:35 +0000";

NSTimeZone* localTimeZone = [NSTimeZone localTimeZone];
NSString* localAbbreviation = [localTimeZone abbreviation];

NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setLocale:locale];
[dateFormatter setDateFormat:@"yyyy-MM-dd H:mm:ss Z"];
NSDate *aDate = [dateFormatter dateFromString:yourJSONString];

NSTimeZone *timezone = [NSTimeZone timeZoneWithName:localAbbreviation];
[dateFormatter setTimeZone:timezone];

NSLog(@"%@", [dateFormatter stringFromDate:aDate]);

一切正常!

4

2 回答 2

1

您使用 aNSDateFormatter从 a 读取日期NSString,然后您可以使用另一个(可能相同)显示更改时区的日期NSDateFormatter

NSString * yourJSONString = @"2013-01-21 18:22:35 +0000";
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterFullStyle
 ];
[dateFormatter setDateStyle:NSDateFormatterFullStyle];    
NSDate * aDate = [dateFormatter dateFromString:yourJSONString];

NSTimeZone * timezone = [NSTimeZone timeZoneWithName:@"America/Chicago"];
[dateFormatter setTimeZone:timezone];

NSLog(@"%@", [dateFormatter stringFromDate:aDate);

请注意,时区只是显示的问题,而NSDate对象只是表示日期的抽象,它独立于显示。

于 2013-01-21T18:27:12.373 回答
0
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 
NSTimeZone *timeZone = [NSTimeZone localTimeZone]; [dateFormatter setTimeZone:timeZone];

NSString *myCurrentDeviceDate = [dateFormatter stringFromDate:[NSDate date]];
于 2014-12-09T20:53:19.847 回答