web-dev-qa-db-ja.com

NSTimeZone:「UTC」と「GMT」の違いはありますか?

これらの5つのステートメントは互換性がありますか、それとも、それらを使用すると異なる結果が生じるケースを知っていますか?私が集めたものからそれらは同等ですが、私は決定的なものを何も見つけていません、そしてGMTとUTCバリアントの間の潜在的な違いは私を心配しています。

[NSTimeZone timeZoneWithName:@"GMT"];
[NSTimeZone timeZoneWithName:@"UTC"];
[NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[NSTimeZone timeZoneWithAbbreviation:@"UTC"];
[NSTimeZone timeZoneForSecondsFromGMT:0];
37
Clafou

the docs によると、CFTimeZone(および拡張子によってはNSTimeZone)は、タイムゾーン名、省略形、GMTオフセット、および TZ (または「Olsen」)データベース

ソース を見ると、意味的には「GMT」と「UTC」はまったく異なりますが、実際には違いはありません。「GMT」はゼロオフセットタイムゾーンにすぎません。

更新:この回答は1968年4月9日より後の日付にも当てはまりますが、過去の日付を扱う場合、Cocoaは有効なGMTの過去の定義を使用しているようです問題の日付(現在の定義ではなく)。これは、1968年4月9日より前の日付ではGMTとUTCが異なる可能性があることを意味します。詳細な説明については この有益なブログ投稿 の最後を参照してください。

41
followben

ほとんどすべての場合のGMTはUTCを意味します。
しかし、今日それが意図されているものとは間違った言葉です。
Unfortunatley AppleはGMTという用語を使用していますが、UTCを使用する必要があります。

GMTはUTC(1928年以降)の意味でもはや存在していませんが、英国とアフリカでは不幸なことに、この用語は西ヨーロッパ時間または西ヨーロッパ夏時間を表すために使用されています。本当のGMTは今日UTと呼ばれ、UTCとは最大0.9秒異なる場合があります。

ウィキペディアの記事: 英語 | ドイツ語

ただし、一部のコンピュータープログラム(メールヘッダー)では、歴史的な理由(UNIX)のため、GMTと呼ばれています(UTCの意味で)

7
AlexWien

AppleのNSDateFormatterおよびインターネット日付の記事[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]];
}
4
Heath Borders