NSTimeZone:“UTC”和“GMT”有啥区别吗?
Posted
技术标签:
【中文标题】NSTimeZone:“UTC”和“GMT”有啥区别吗?【英文标题】:NSTimeZone: Any difference between "UTC" and "GMT"?NSTimeZone:“UTC”和“GMT”有什么区别吗? 【发布时间】:2013-02-03 12:39:54 【问题描述】:这五个语句是否可以互换,或者是否有人知道使用它们会产生不同结果的情况?据我所知,它们是等价的,但我还没有发现任何结论,GMT 和 UTC 变体之间的潜在差异让我担心。
[NSTimeZone timeZoneWithName:@"GMT"];
[NSTimeZone timeZoneWithName:@"UTC"];
[NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[NSTimeZone timeZoneWithAbbreviation:@"UTC"];
[NSTimeZone timeZoneForSecondsFromGMT:0];
【问题讨论】:
我比较确定这两者在 ios 中基本相同。 【参考方案1】:根据the docs,CFTimeZone
(以及扩展名NSTimeZone
)使用来自TZ (or "Olsen") Database 的时区名称、缩写、GMT 偏移量和 DST 信息。
查看the source,您会发现虽然“GMT”和“UTC”在语义上截然不同,但实际上它们并没有什么不同:“GMT”只是一个零偏移时区。
更新:虽然这个答案对于 1968 年 4 月 9 日之后的日期仍然适用,但在处理历史日期时,Cocoa 似乎使用了在相关日期有效的 GMT 过去定义(而不是现代定义)。这意味着 1968 年 4 月 9 日之前的日期,GMT 和 UTC 可能有所不同。有关详细说明,请参阅this informative blog post 的结尾。
【讨论】:
感谢您的完美回答,我做梦也想不到更权威的!在语义上,我担心的一个原因是 Apple 文档似乎将通用时间称为 GMT(不是 UTC,正如我所预料的那样)。例如,Apple 将 NSDate 的timeIntervalSinceReferenceDate
描述为“返回接收器与 2001 年 1 月 1 日格林威治标准时间的第一时刻之间的时间间隔”。但现在我已经习惯了,谢谢。【参考方案2】:
在几乎所有情况下,GMT 都意味着 UTC。 但今天,它的本意是错误的。 不幸的是,Apple 使用术语 GMT,而它应该使用 UTC。
GMT 在 UTC 的意义上不再存在(自 1928 年以来),但不幸的是,在英国和非洲,该术语仍用于表示西欧时间或西欧夏令时。今天真正的 GMT 称为 UT,与 UTC 最多相差 0.9 秒。
***上的文章:English | German
但是在某些计算机程序(邮件标题)中,由于历史原因(unix),它仍然被称为 GMT(在 UTC 的意义上)
【讨论】:
【参考方案3】:Apple's NSDateFormatter and Internet Dates article 使用[NSTimeZone timeZoneForSecondsFromGMT:0]
:
static NSDateFormatter * sRFC3339DateFormatter;
NSString * userVisibleDateTimeString;
NSDate * date;
// If the date formatters aren't already set up, do that now and cache them
// for subsequence reuse.
if (sRFC3339DateFormatter == nil)
NSLocale * enUSPOSIXLocale;
sRFC3339DateFormatter = [[NSDateFormatter alloc] init];
enUSPOSIXLocale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
[sRFC3339DateFormatter setLocale:enUSPOSIXLocale];
[sRFC3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"];
[sRFC3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
【讨论】:
以上是关于NSTimeZone:“UTC”和“GMT”有啥区别吗?的主要内容,如果未能解决你的问题,请参考以下文章