我正在从服务器解析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]);
一切正常!
答案 0 :(得分:1)
您使用NSDateFormatter
从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
对象只是表示日期的抽象,它与显示无关。
答案 1 :(得分: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]];