我正在从远程源导入一些参考日期。日期表示一年中任意一天的时间(在本例中为 01/01/2000)。它们以 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
我做错了什么?