1

日付を文字列から次の形式のNSDateに変換するのに苦労しています。

2012-09-05 12:00 GMT-5 +DST

これまでのところ、私はこのコードを持っています:

NSString *myDateStr = @"2012-09-05 12:00 GMT-5 +DST";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-DD HH:mm:ss Z"];
NSDate *date = [formatter dateFromString:myDateStr];

日付文字列はAPIから取得されるため、形式を制御することはできません。

おそらくこれを解析するためのカスタムフォーマッターを作成する必要がありますか?

4

1 に答える 1

0

日付文字列をこの関数に渡します。この関数はNSDateオブジェクトを返します。

GMT-5 + DSTはCDTと同じであるため、正しい値を取得しているかどうかを再確認できます。参照

timeZoneをCDTとして設定すると、同じ結果が得られます。

-(NSDate *)timeConvert:(NSString *)string
{
      NSString *firstString = [string substringToIndex:16];
      NSString *lastString = [string substringFromIndex:17];

      NSLog(@"%@, %@", firstString, lastString);
      NSTimeZone *timeZone = [NSTimeZone  timeZoneWithName:lastString];
      NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
      [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];
      [formatter setTimeZone: timeZone];

      NSDate *date = [formatter dateFromString:firstString];

      return date;
}
于 2012-09-06T11:28:25.793 に答える