2012-01-19 12 views
6

プログラミングに時間関連のアルゴリズムを見たことはどこでも好きですが、GMTは基本時間でした。たとえば、GMT + 00のDBに常に時間を格納するように指示され、タイムゾーンの変更によって何かが中断されることはありません。なぜGMTはUTCではなくコンピュータ時間の標準ですか?

  1. GMTはソフトウェア開発の基本タイムゾーンのようですか?

  2. もしそうなら、UTCはどうですか?なぜさえUnixのタイムスタンプがUTC(http://en.wikipedia.org/wiki/Unix_time)

+1

GMTとUTCは同じだと思います。違いは、それを定義する組織の名前です。イギリスのもの(GMT =グリニッジ・メリディアン・タイム)は国際的なもの(UTC)に先立っています。 http://en.wikipedia.org/wiki/UTC –

+0

を参照してください.UTCはフランス語でGMTは英語ですか? – arx

+0

[UTC + 01]:[タイムゾーンの略語一覧](http://en.wikipedia.org/wiki/List_of_time_zone_abbreviations)、[UTCオフセットによるタイムゾーンの一覧](http:// en .wikipedia.org/wiki/List_of_time_zones_by_UTC_offset#toc) –

答えて

7

GMTとUTCは同じ時刻です。 UNIXの時刻はUTCに基づいているため、UNIXシステムと* nixシステムのほうが多いかもしれません。

UTCは、正式な時刻としてより詳細に追跡されます(つまり、地球の回転に基づいて「真の」時間にさらに近づきます)。ただし、ソフトウェアに2番目の計算が必要な場合を除いて、GMTかUTCのどちらを使用しても違いはありません。

どのユーザーに表示するかを検討することもできますが、 1つのフォーマットは別のフォーマットよりも馴染みやすいかもしれません。私は通常、グローバルアプリケーションの場合はUTC、ヨーロッパまたは英国のアプリケーションの場合はGMTを使用します。

+3

わずかな修正:http://en.wikipedia.org/wiki/Coordinated_Universal_Timeによると、UTCは原子時計に基づいており、技術的にUT1とGMTのように地球の回転に基づいているわけではありません。しかし、研究した後、あなたが秒未満の精度を心配していなければ、GMTはUTCと同じです。 –

+0

@ Thr4wn UTCとTAIは調整されていますが、30秒以上離れています。これは、UTCがUT1の1秒以内に閏秒を残すことがあるためです。精度と精度の問題だと思う。 UTCとTAIは正確に* 34秒離れていますが、UTCとUT1はより正確に関連しています(1秒以内)。 –

+0

ああ、良い点。私はそれを考えなかった。 –

1

から定義されていることを考慮すると、代わりに "GMT + 01" の "UTC + 01" と言うのが一般的ではありませんほとんどの人がGMTに慣れているからです。人に情報を表示しようとしている場合、具体的には時間を分かりやすく理解できる形式が必要です。 GMTを使用すると、UTCに変換して戻す余分な手順が保存されます。

+0

GMTとUTCは同じものの異なる名前です。変換するものはありません。 – arx

+0

@アックス、これは同じ時間ですが、同じものではありません! –

+0

違いがある場合は、両者の間で何らかの変換が必要になるでしょうか? – CSturgess

2

この受け入れられた応答は実際には間違っています。まず、彼らはどの手段によっても同じではありません。 2番目のUTCは、地球の回転に基づく「真の」時間に一直線ではなく、まったく逆です。 UTCは「時間」尺度の点でより正確です。各秒は原子時計に基づいており、精度は高さが増しています(1秒オフセットするのに3万年かかる)。

GMTでは、地球の回転を追跡するのではなく、これは必ずしも同じではありません(地球の回転は減速しています)。もちろん、本当に少ない時間で違います。しかし、科学的な目的のために、GMTよりもずっと正確なUTCです。

これは、4時間/ 5年ごとに+2秒を変更する理由です(アース回転は、回転にかかる毎秒がUTCよりも大きくなければならないため、GMTアース回転時間はa差の秒。

+0

FYI - GMTではなく、UT1について説明しました。 [ウィキペディアはとてもうまくいっています](「https://en.wikipedia.org/wiki/Greenwich_Mean_Time」):「...今日、GMTはイギリスの市民のためにUTCと同等と見なされています。ナビゲーションはUT1と同等と見なされます。 .. " –

1

GMTとUTCは同じものではありません。その差異については、https://en.wikipedia.org/wiki/Greenwich_Mean_TimeとそのリンクをUTCにお読みください。

一部のコンピュータユーザーは、Windows 7まで、Microsoftオペレーティングシステムは完全にUTCをサポートしていなかったため、GMTとして国際時間基準にラベルを付けることはできません。

重要な問題は、WindowsがBIOSクロックを読み取り設定する方法です。 Windows XPでは、BIOSクロックをUTCに設定することはできません。そのため、BIOXクロックを現地時間に設定してから、差異を追跡しているWindowsに依存する必要があります。

Windows 7では、WindowsはBIOSクロックをUTCに設定することができ、すべての計算(ほとんど?)はUTCと一貫しているため、MicrosoftはラベルをGMTからUTCに切り替えることにしました。

参照:

https://superuser.com/questions/185773/does-windows-7-support-utc-as-bios-time

+0

Windowsのビットが正しくありません。 MicrosoftがUTCがより正確な用語であることを認識したため、ラベルはGMTからUTCに変更されました。それは、サポートできるものとできないものとは関係がありません。機能の変更はWindows 7の時間処理には適用されませんでした。[この記事の]いくつかの詳細(http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html)は、少なくともRealtimeIsUniversalがWindows 2000以降にあったことを示しています。 Windows NTに戻る)。 –

3

私はIANA timezones現在、現在夏時間でそれらをキャッチするために(今から現在および6ヶ月、「GMT」の略語を使用しているものを発見するのも楽しいだろうと思いました)。このfree, open source C++11/14 libraryを使用

は、私はこのプログラムを書いた:

#include "tz.h" 
#include <string> 
#include <iostream> 
#include <vector> 

template <class Duration> 
std::vector<date::zoned_time<std::common_type_t<Duration, std::chrono::seconds>>> 
find_by_abbrev(date::sys_time<Duration> tp, const std::string& abbrev) 
{ 
    using namespace std::chrono; 
    using namespace date; 
    std::vector<zoned_time<std::common_type_t<Duration, seconds>>> results; 
    auto& db = get_tzdb(); 
    for (auto& z : db.zones) 
    { 
     if (z.get_info(tp).abbrev == abbrev) 
      results.push_back(make_zoned(&z, tp)); 
    } 
    return results; 
} 

int 
main() 
{ 
    using namespace std::chrono; 
    using namespace date; 
    auto now = system_clock::now(); 
    auto v = find_by_abbrev(now, "GMT"); 
    for (auto const& x : v) 
     std::cout << format("%F %H:%M:%S %Z %z", x) << " " 
        << x.get_time_zone()->name() << '\n'; 
    std::cout << '\n'; 
    v = find_by_abbrev(now + months{6}, "GMT"); 
    for (auto const& x : v) 
     std::cout << format("%F %H:%M:%S %Z %z", x) << " " 
        << x.get_time_zone()->name() << '\n'; 
} 

これは、現在、両方の今、「GMT」を使用して、今から6ヶ月間されているすべてのタイムゾーンのための惑星を検索し、それらを出力します。

2016-06-18 01:00:25.632773 GMT +0000 Africa/Abidjan 
2016-06-18 01:00:25.632773 GMT +0000 Africa/Accra 
2016-06-18 01:00:25.632773 GMT +0000 Africa/Bissau 
2016-06-18 01:00:25.632773 GMT +0000 Africa/Monrovia 
2016-06-18 01:00:25.632773 GMT +0000 America/Danmarkshavn 
2016-06-18 01:00:25.632773 GMT +0000 Atlantic/Reykjavik 
2016-06-18 01:00:25.632773 GMT +0000 Etc/GMT 

2016-12-17 15:55:01.632773 GMT +0000 Africa/Abidjan 
2016-12-17 15:55:01.632773 GMT +0000 Africa/Accra 
2016-12-17 15:55:01.632773 GMT +0000 Africa/Bissau 
2016-12-17 15:55:01.632773 GMT +0000 Africa/Monrovia 
2016-12-17 15:55:01.632773 GMT +0000 America/Danmarkshavn 
2016-12-17 15:55:01.632773 GMT +0000 Atlantic/Reykjavik 
2016-12-17 15:55:01.632773 GMT +0000 Etc/GMT 
2016-12-17 15:55:01.632773 GMT +0000 Europe/Dublin 
2016-12-17 15:55:01.632773 GMT +0000 Europe/London 

すべてのケースで、UTCオフセットが+0000であることがわかりました。あなたは政治家やタイムゾーンを知らない。一部の立法府は「グリーン・マウンテン・タイム」を簡単に宣言することができます(明日もそうかもしれません)。

関連する問題