0

サーバーからJSONを解析していますが、値の1つは次のような日付です:2013-01-21 18:22:35 +00000

私の問題は、この日付を2013-01-2112: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

を使用して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オブジェクトは日付を表すための単なる抽象化であり、表示によって独立していることに注意してください。

于 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 に答える