2009-03-30 2 views
0

시스템 시간이 13:58이고 시간 서버가없는 경우에만 Windows 시스템 시계를 동기화하지만 분을 설정하는 기능이있는 응용 프로그램이 있습니다. 14:02,이 경우에도 시간을 변경해야합니다. 문제는 사용자가 시간대를 불문하고 언제든지 시계를 설정할 수 있기를 원하기 때문에 시간 서버/시간 등을 사용하지 않고 동기화하는 것입니다.시간은 동기화하지만 시간대는 무시하십시오.

예를 들어, Windows 시간대가 PST이고 사용자가 시간대를 변경하지 않고 향후 5 시간을 설정하더라도 시스템을 올바르게 동기화하여 향후 5 시간 동안 유지하려고합니다.

분에 따라 시간을 앞뒤로 설정해야하는지 계산할 수있는 알고리즘이 있습니까?하지만 시간대 요소는 무시합니까? 시스템이 15:59이고 서버가 16:02 인 경우 시스템은 15:02가 아닌 16:02로 설정해야합니다 (분만 변경 한 경우). 시스템이 15:28이고 서버가 16:02이면 시스템이 15:02로 설정되어야합니다. 나는 잠시 동안 이것을 궁리했다. 그러나 내가 그것에 관해 갈 것 인 방법 주위에 나의 머리를 얻는 것처럼 보일 수 없다!

나는 이미 시간 서버 날짜와 시간, 시스템 시간 (나는 델파이를 사용하고있다.)을 얻기위한 코드를 가지고있다. 그래서 그것으로 무엇을 해야할지 계산할 문제 일 뿐이다.

감사합니다.

+0

시계를 의도적으로 "현지 시간"으로 설정 한 이유는 무엇입니까? 사용자가 시간대를 적절한 오프셋으로 변경할 수 있습니까? –

답변

3

서버 또는 클라이언트의 시간대에 관계없이 클라이언트 컴퓨터의 UTC 시간을 서버의 UTC 시간과 동일하게 동기화하는 것이 실제로 원하는 것처럼 들립니다.

UTC를 기준으로 시간을 가져오고 설정하는 API를 찾고 싶을 것입니다. 나는 완전히 미래에 자신의 기계 5 시간 설정 사용자의 관점에서 당신의 질문을 이해하지 않았기 때문에 , 당신이 원하는하지 않을 수

...

+0

답장 덕분에 기본적으로 시계가 의도적으로 미래/과거 시간으로 설정 될 수 있습니다.이 경우 UTC를 사용하는 것이 아마도 옵션이 아닙니다. Windows 시간대를 기준으로 시간을 수정한다고 가정하기 때문에? 어느 것이 원하는 행동이 아닙니다. –

+0

Windows 표준 시간대에 따라 수정되지 않습니다. UTC를 기준으로 수정됩니다.의도적으로 시스템 시계를 몇 시간 동안 사용하는 데 유효한 유스 케이스는 무엇입니까? 시간이 30 분이라는 사실을 알게되면 30 분 또는 그 뒤로 앞으로 움직일 것이라고 기대합니까? –

0

당신은 분을 비교하고 수 55 세 이상이고 시스템이 < 05 인 경우 시간을 늘리십시오. 다른 가장자리 조건에 대해서도 비슷한 작업을 수행하십시오.

2

시간 경계에 있지 않은 시간대가 있다는 것을 잊지 마십시오 ... 사용자의 시계가 13:30이고 서버가 13:00 인 경우 사용자가 뉴 펀들 랜드가 아니라는 것을 어떻게 알 수 있습니까? 몬트리올보다는 (말하기).

Jon이 제안한 UTC가 앞으로 나아갈 길이라고 생각합니다.

+1

실제로. 심지어 약간 짜증나는 것들이 15 분 경계에 맞추어 져있어, 시계와 약간 다른 시간대의 차이를 말해주는 여유를주지는 못합니다. – bobince

2

서버 시간을 가져오고 N 시간을 뺀 다음 현지 시간을 설정하십시오. 문제 없습니다.

시간은 실수입니다. 시간, 분, 초 등은 단지 프리젠 테이션 형식입니다.

계산에 시간대를 포함해야하는 경우 내 GpTimezone (description)을 사용하십시오.

관련 문제