我有个约会, 2010-08-23 13:30:00 -0400 而且我试图将其在UTC +2时区中获取。秒的差异为21600,但是当我打电话时 [[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate];, ,我明白了 2010-08-24 01:30:00 +0200 应该是 2010-08-23 19:30:00 +0200. 。知道我在做什么错吗?

有帮助吗?

解决方案

日期对象代表一个特定的时间,无论当时不同的人的时钟可能会说什么。

当您想显示日期时,时区会参与其中,因为当时您通常会显示用户时钟(或正在说或会说)的内容。这正是您的 NSLog NSDATE:日期的描述是您本地时区表示的那一刻。

从NSDATE添加或从NSDATE减去不是时区转换。加法和减法产生代表的NSDATE 其他 时间的瞬间;就您的情况而 不是 同一时刻位于地球的另一侧。

为了简化,时区转换正在查看 同时太空中的不同点 (地球表面的不同部分),而日期的添加和减法是 计算不同的时间.

NSDATE没有时区转换,因为它不在时区。只有在您格式化该时区的日期时才涉及时区。因此,要在其他时区显示该日期,请这样做。通常,这意味着向您的 日期格式.

其他提示

我看到您回来的日期有一个不同的时区 +200 不是 -400. 。如果您注意到,您会发现该结果恰好比原始日期晚12小时(或6小时 + 6小时)。当您结交新约会时,您是否偶然地更改了语言环境?当您做出开始给您的更改时 +200 代替 -400 系统自动调整了补偿时间,然后再添加6个小时的日期。 NSDATE自2001年1月1日GMT以来将所有日期存储为时间间隔,并根据需要调整时区。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top