0

リモート ソースから多数の参照日付をインポートしています。日付は、任意の日 (この場合は 2000 年 1 月 1 日) の時刻を表します。これらは Unix タイムスタンプとして提供されます。たとえば、946717200 は午前 9 時を表します。また、各場所のタイムゾーンも取得しています。

次のコードを使用して、これらの時間を UTC からの正しいオフセットを持つ実際の日付に変換しています。

-(NSDate *)dateWithInterval:(NSTimeInterval)interval referenceDate:(NSDate *)aRealDate timezone:(NSTimeZone *)aTimeZone
{
  NSDate *time = [NSDate dateWithTimeIntervalSince1970:interval];
  NSDateComponents *components = [[NSDateComponents alloc] init];

  //Set the timezone
  [components setTimeZone:aTimeZone];

  //I'm using Erica Sadun's NSDate+utilities category on NSDate to provide the shorthand methods
  [components setDay:[aRealDate day]];
  [components setMonth:[aRealDate month]];
  [components setYear:[aRealDate year]];
  [components setHour:[time hour]];
  [components setMinute:[time minute]];
  [components setSecond:[time seconds]];

  return [[NSCalendar currentCalendar] dateFromComponents:components];
}

たとえば、指定された 946717200 の入力、現在の日付、および America/Los_Angeles タイムゾーンでは、日付2013-10-07 16:00:00 +0000が与えられますが、NSDateFormatter を使用してフォーマットすると、タイムゾーンが America/Los_Angeles に設定され、システムが同じタイムゾーンに設定されている場合、これは2013-10-07T01:00:00-0700のように表示されます

私は正しくやっていないのですか?

4

1 に答える 1