gpt4 book ai didi

objective-c - 使用 init WithTimeInterval 获取错误日期 : sinceDate:

转载 作者:行者123 更新时间:2023-12-03 17:36:42 27 4
gpt4 key购买 nike

我有一个日期,2010-08-23 13:30:00 -0400,我正在尝试在 UTC +2 时区获取它。以秒为单位的差异是 21600,但是当我调用 [[NSDate alloc] initWithTimeInterval:intervalsinceDate:sourceDate]; 时,我得到 2010-08-24 01:30:00 +0200 code> 应为 2010-08-23 19:30:00 +0200。知道我做错了什么吗?

最佳答案

日期对象代表特定的时刻,无论不同人的时钟当时可能表示什么。

当您想要显示日期时,就会涉及到时区,因为您通常会显示用户的时钟当时会说(或正在说,或将要说)的内容。这正是您 NSLog 一个 NSDate 时发生的情况:日期的描述是以您本地时区表示的那一刻。

对 NSDate 添加或减去不是时区转换。加法和减法产生代表时间上的其他时刻的NSDate;就您而言,您正在为从您开始的那一刻起 6 小时后的某个时刻创建一个 NSDate,而不是在地球另一端的同一时刻。

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

NSDate 没有时区转换,因为它一开始就不在时区中。仅当您设置时区的日期格式时,才会涉及时区。因此,要在其他时区显示该日期,只需这样做即可。通常,这意味着向您的 date formatter 提供所需的时区。 .

关于objective-c - 使用 init WithTimeInterval 获取错误日期 : sinceDate:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3550274/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com