2013-10-16 2 views
0

두 입력 시간이 같다고합시다. 시간 1은 2013-10-01-00-00-00이고 시간 2는 2000-01-01-12-00-00입니다.리눅스에서 mktime 함수를 사용하는 시간의 차이

나는 위의 두 번을 struct tm 구조로 채 웁니다. mktime을 사용하고 2 개의 구조를 전달했으며 type time_t의 두 가지 값을가집니다. 우리는 각각 Time_1과 Time_2입니다. 지금은 TIME_1 및 Time_2의 차이를 가지고가는 경우에

,

  1. 이는 2 입력 시간 시간-1 및 시간-2 사이의 경과 초 포함되어 있습니까?
  2. 이 함수는 도약 년에 대해 내부적으로 추가 초를 처리합니까?
  3. UTC의 관점에서 실제 차이를 얻으려면 윤년 추가/삭제해야합니까?

답변

0

윤년은 그 안에 여분 날이있는 연도입니다. 모든 Posix 시간 함수가이를 완벽하게 처리합니다.

국제 윤전 및 참조 시스템 서비스 (International Earth Rotation and Reference Systems Service)에서 수시로 UTC에 삽입하거나 삭제 한 "윤초"가 있습니다. Posix 시간 함수 중 어느 것도 윤초를 인식하지 못합니다.

그래서 윤년을 염두에 둔다면 직접 계산해야합니다. 윤년이라 불리는 것에 관심이 있다면 걱정할 필요가 없습니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 선생님은 posix 시간 함수가 윤년을 처리한다고 주장하는 공식 링크를 게시 할 수 있습니까? – Soumajit

+0

mktime은 현지 시간을 Epoch에서 초 수로 변환합니다. (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_15). 이를 올바르려면 윤년을 고려해야합니다. 그렇지 않은 경우 에포크 이후 잘못된 시간 (초)을 계산합니다. 분명히 두 개의 "epoch 이후 값"값의 차이는 두 값 사이의 초 수입니다. – rici

+0

고맙습니다. 이제 한 가지 더 의심스러워. 위의 함수에서 초당 분해능이란 무엇입니까? O/S가 초당 수에 어떻게 도달합니까? 시스템이 NTP 서버와 동기화되면 초당 카운트에 영향을 줍니까? – Soumajit