2012-01-19 1 views
6

프로그래밍에있어 시간 관련 알고리즘을 본 모든 곳에서 마음에 들었습니다. GMT가 기본 시간이었습니다. 예를 들어, GMT + 00의 DB에 항상 시간을 저장하라는 지시를 받았으므로 시간대를 변경해도 아무런 방해가되지 않습니다.왜 GMT가 UTC 대신 컴퓨터 시간의 표준이됩니까?

  1. 저는 GMT가 소프트웨어 개발의 기본 시간대 인 것처럼 보입니까?

  2. 그렇다면, 왜 안 UTC? 이유는 "UTC + 01"말을하는 것이 일반적없는 대신 "GMT + 01"심지어 유닉스 타임 스탬프 (http://en.wikipedia.org/wiki/Unix_time) UTC에서 정의 된 점을 고려

+1

나는 GMT와 UTC가 같다고 생각한다. 차이점은이를 정의하는 조직의 이름입니다. 영국 (GMT = 그리니치 자오선 시간)은 국제 시간 (UTC)보다 먼저 나타났습니다. http://en.wikipedia.org/wiki/UTC –

+0

을 참조하십시오. UTC는 프랑스어이고 GMT는 영어이기 때문에? – arx

+0

[표준 시간대 약어 목록] (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는 더 밀접하게 (즉 지구의 회전 기반으로 "true"로 시간에 맞춰 더 밀접하다) 공식 시간으로 추적됩니다. 하지만 소프트웨어에 두 번째 계산이 필요하지 않으면 그리니치 표준시 또는 UTC를 사용하든 별 차이가 없어야합니다.

사용자에게 표시 할 대상을 고려할 수도 있습니다. 한 형식은 다른 형식보다 익숙 할 수 있습니다. 일반적으로 글로벌 응용 프로그램은 UTC, 유럽 또는 영국 기반 응용 프로그램은 GMT로 이동합니다.

+3

약간의 수정 : http://en.wikipedia.org/wiki/Coordinated_Universal_Time에 따르면 UTC는 원자 시계를 기반으로하며 기술적으로 UT1 및 GMT와 같이 지구의 회전을 기반으로하지 않습니다. 그러나 조사한 결과 1 초 미만의 정확도에 대해 걱정하지 않는다면 GMT가 UTC와 동일하다는 것을 알게되었습니다. –

+0

@ Thr4wn UTC와 TAI는 조정되지만 30 초 이상 떨어져 있습니다. 이는 UTC가 때때로 UT1의 1 초 내에 유지할 수있는 윤초를 추가하기 때문입니다. 정확도 대 정밀도의 문제라고 생각합니다. UTC와 TAI는 정확하게 * 34 초 간격이지만 UTC와 UT1은 더 정확하게 * 관련된 * (1 초 이내)입니다. –

+0

아, 좋은 지적. 나는 그런 생각을하지 못했다. –

1

나는 그것이 대부분의 사람들이 GMT에 익숙하기 때문에 그렇다고 말할 것이다. 특정 시간에 정보를 표시하려면 정보를 쉽게 이해할 수 있어야합니다. GMT를 사용하면 UTC로 변환하고 다시 변환하는 추가 단계를 절약 할 수 있습니다.

+0

GMT와 UTC는 같은 이름의 다른 이름입니다. 변환 할 것이 없습니다. – arx

+0

@arx, 이것은 같은 시간이지만 같은 것은 아닙니다! –

+0

차이가 있다면 두 사람 사이에서 수행해야하는 일종의 변환이 있어야합니다. 맞습니까? – CSturgess

2

이 허용 된 응답은 실제로 잘못되었습니다. 처음에는 어떤 수단으로도 동일하지 않습니다. 두 번째 UTC는 지구 자전에 근거한 "진정한"시간에 더 가깝지 않으며 정확하게 반대입니다. UTC는 '시간'측정의 측면에서보다 정확합니다. 각 초는 원자 시간을 기반으로하기 때문에 동일합니다. 정밀도는 한 단계 높이기 위해 30,000 년이 걸립니다. 이 항상 같은 (지구 회전이 느려지고) 매 초마다 다릅니다하지 않기 때문에

은 GMT 대신, 지구 회전을 추적합니다. 물론, 정말 작은 시간에 차이가 있습니다. 그러나 cientific 목적을 위해, GMT보다 훨씬 더 정확합니다.

이것은 4/5 년마다 +2 초를 변경하는 이유입니다 (지구 회전은 회전에 걸리는 초마다 UTC보다 커야하기 때문에) GMT 접지 회전 시간이 차이의 초.

+0

FYI - GMT가 아니라 UT1에 대해 설명했습니다. [Wikipedia는 아주 잘 말한다] (https://en.wikipedia.org/wiki/Greenwich_Mean_Time) : "... 오늘 GMT는 영국 시민의 목적으로 UTC와 동등한 것으로 간주되며, 네비게이션은 UT1과 동등한 것으로 간주됩니다. .. " –

1

GMT와 UTC는 서로 다릅니다. 구별에 관해서는 https://en.wikipedia.org/wiki/Greenwich_Mean_Time와 UTC의 링크를 읽으십시오.

일부 컴퓨터 사용자가 윈도우 7까지에는 Microsoft 운영 시스템이 완전히 UTC를 지원하지 않으며, 따라서 GMT와 같은 국제 시간 기준 레이블을 유지한다는 사실에 의해 혼동된다. Windows가 읽고 BIOS 시계를 설정하는 방법

중요한 문제

이다. Windows XP는 BIOS 시계를 UTC로 설정하는 것을 처리 할 수 ​​없기 때문에 BIOX 시계를 현지 시간으로 설정해야하며 차이점을 추적하는 Windows에 의존해야합니다.

Windows 7부터 Windows는 BIOS 시계를 UTC로 설정할 수 있으며 모든 계산 (대부분?)은 UTC와 일치하므로 Microsoft는 GMT에서 UTC로 레이블을 전환하기로 결정했습니다.

참조 : 내가 현재 지금부터 모두 지금 6 개월, 약어 "GMT"를 사용하고있는 IANA timezones 발견하는 재미있을 것이라고 생각

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

+0

Windows에 대한 비트가 잘못되었습니다. 레이블이 GMT에서 UTC로 변경된 이유는 Microsoft가 UTC가 더 정확한 용어임을 인식했기 때문입니다. 지원할 수 있거나 지원할 수없는 것에는 아무런 관련이 없습니다. Windows 7에서 시간 처리 기능이 변경되지 않았습니다.이 기사의 일부 내용 (http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html)은 적어도 RealTimeIsUniversal이 Windows 2000 이후에 있었음을 나타내며 그 전에 Windows NT로 돌아 가기). –

3

은 (일광 절약 시간에 현재 사람들을 잡으려고).

free, open source C++11/14 library 사용하여, 나는이 프로그램을 썼다 : 모두 지금이 현재 "GMT"를 사용하는 모든 시간대의 행성을 검색

#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'; 
} 

, 그리고 지금부터 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임을 알았습니다. 정치인과 시간대를 알지 못합니다. 일부 입법 기관은 "그린 마운틴 타임"을 쉽게 선언 할 수 있습니다 (내일은 가능할 수도 있음).

관련 문제