일광 절약 규칙 변경으로 인해 C 런타임 라이브러리가 무효화 되었습니까?

StackOverflow https://stackoverflow.com/questions/275952

  •  07-07-2019
  •  | 
  •  

문제

얼마 전에 나는 a 시각 누군가를 위해 1 년 이내에 상대 시간을 운동하는 데 사용할 수있는 기반 라이브러리. 당시 나는 일광 절약을 위해 양방향으로 1 시간의 교대를했다고 지적했다. 그것은 단지 나에게 일어났다 의회는 일광 절약 시간 규칙을 변경했습니다. 알고리즘의 변경을 해결하기 위해 업데이트에 대한 정보를 보지 못했습니다. 이 주제에 대한 정보가 있습니까?

도움이 되었습니까?

해결책

대부분의 UNIX와 유사한 시스템은 시간대 정보에 대해 Olson TZ 데이터베이스를 사용합니다.

http://www.twinsun.com/tz/tz-link.htm

미국 시간대 규칙에 대한 변경 사항은 TZ 데이터베이스의 2005L 버전에서 구현되었습니다.

다른 팁

Visual Studio 2005 이상의 경우 Microsoft는 업데이트 된 버전의 C 런타임 라이브러리를 출시했습니다. 자세한 정보는 찾을 수 있습니다 여기.

어떤 플랫폼에서 작업하고 있습니까?

의회는 전 세계에 대한 규칙을 설정하지 않기 때문에 :) UNIX/Linux에 대한 규칙을 오랫동안 유연하게 지정하는 메커니즘이있었습니다.

예를 들어, http://www.manpagez.com/man/8/zic/ 파일 형식의 경우. 특정 시스템은 새로운 규칙에 대한 업데이트 된 정의가 필요할 수 있습니다 (배포가 이미 처리되지 않은 경우)

Windows의 경우 MS는 일부 규칙을 구축하고 상황이 변경 될 때 업데이트를 릴리스합니다.

MacOS의 경우, 나는 전혀 모른다. 그러나 나는 그것이 일을하는 유닉스 방식을 상속한다고 생각한다.

그러나 이러한 모든 경우에 C 라이브러리 변경이 필요하지 않습니다.

보다 일반적으로 C 런타임은 내부 데이터 파일을 사용하여 내부 시간 표현에서 사용자의 로케일로 매핑됩니다. 이 매핑은 각 공급 업체가 현재의 법률에 맞게 정기적으로 업데이트됩니다.

내부 시계는 UTC로 설정되어야하므로 일광 절약 시간은 시간대를 바꾸는 문제 일뿐입니다. 예를 들어, 내 로케일에서 10 월 26 일에 Mac은 CEST (Central European Summer Time)에서 'Normal'CET (Central European Time)로 전환했습니다. 내 시계의 디스플레이가 변경되었지만 컴퓨터의 시간은 변경되지 않았습니다.

http://www.timeanddate.com/library/abbreviations/timezones/eu/cest.html

실제로 이것은 당신이 당신의 dateTime 변수를 UTC 또는 기본 형식으로 유지하여 시간대를 고려해야한다는 것을 의미합니다. 그렇기 때문에 "yyyymmddhhmmss"문자열로 dateTime을 녹음하는 것이 버그가 발생하기를 기다리는 버그입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top