2011-04-07 3 views
8

나는 JavaScript 타임 스탬프와 PHP 타임 스탬프를 만들었습니다. 서로 약 170 초의 차이가 있습니다.왜 JavaScript와 PHP 타임 스탬프가 다른가요?

  • 1302162686 PHP - time()
  • 1302162517 자바 스크립트 - Math.round(new Date().getTime()/1000)

나는이 문제를 데 왜 아무도 말해 주시겠습니까?

+1

는 서버와 클라이언트를 수행은 같은 시간 설정? –

답변

14

PHP는 서버 측에서 실행되며 예제에서 JavaScript는 클라이언트 측에서 작동합니다.

양쪽에는 고유 한 시간 구성이 있습니다. 서버의 경우 시간대 설정 등은 변경하지 않는 한 동일하게 유지되지만 서버는 현재 방문자가있는 시간대를 알 수 없습니다. 사용자가이를 제어 할 방법이 없습니다.

랩톱에서 시스템 시계를 변경하면 클라이언트 쪽 JavaScript 날짜/시간에 영향을 미치지 만 서버 타이머는 영향을받지 않습니다.

+1

8 시간 차이가 있습니다! – nerkn

+0

미안하지만, 그 때 내 마음에서 완전히 벗어났다. 도와 줘서 고마워. –

1

PHP는 시스템 시간 (실행중인 서버)을 봅니다.

JavaScript는 클라이언트 시스템을 언제든지 볼 수 있습니다.

1

PHP는 서버에서 시간을 사용합니다, 자바 스크립트는 클라이언트 (사용자) 컴퓨터에서 시간을 사용합니다.

1

마티아스가 맞습니다. 현대 컴퓨터는 시계가 시간에 따라 드리프트를 인식하고 NTP과 같은 프로토콜을 사용하여 시계를 동기화 상태로 유지하기 때문에 일반적으로 이렇게 큰 차이가 발생하지 않아야합니다.

그럼에도 불구하고 당신은 클라이언트에서 시간을 가정해서는 안와 서버 두 가지 이유로, 동일 :

  • 일부 클라이언트/클럭 (예 : NTP)를 조정하고 자신의 시계를 멀리 이상 표류가없는 서버 시간
  • 더 중요한 것은, 많은 사용자/관리자는 시간대 설정 또는 일광 절약 시간 조정에있어 단서가 될 수 없으므로 주어진 시간은 잠시 정확할 수 있지만 몇 시간 늦어 질 수 있습니다.

시간을 비교/계산할 때 나는 서버에만 의존합니다. 당신은 클라이언트에 대한 통제권이 없습니다.

+0

좋은 답변입니다. 그 마지막 단락은 충분히 강조 될 수 없습니다. –

2

PHP와 JavaScript 모두 시스템 시간을 봅니다. 누구의 시스템인가? 그들이 뛰고있는 사람. 서버는 다른 시간에 다른 국가에 위치 할 수 있으므로 차이가 있습니다.

또한 클라이언트의 (또는 덜 자주 서버의) 시계가 올바르지 않을 수 있습니다.나는 종종이 문제에 대응하기 위해 사용

한 가지 방법은 다음과 같이이다 :

당신이 어떤 목적으로 일관성이 걱정되는 경우
var referenceTime = new Date('<?php echo date("M n, Y"); ?>'); 
// referenceTime is now the same as server time 
0

, 당신의 시간 원본과 같은 서버를 사용하는 것이 좋습니다 그리고 만약 시간대 변환을 할 필요 :

이가 관심을 가질

을 : handling timezone conversion with php

관련 문제