JS는 클라이언트와 서버 시간 불일치 문제를 해결

 

에 리드

프로젝트를 작성할 때 최근에, 시간 표시에 따라 다른 것으로, 직접 사용은 new Date().getTime()현재 시간, 문제에 결과를 얻을 수 있습니다. 획득 시간의 결과로, 자신의 현지 시간을 수정할 수 일부 사용자는 당황, 현재 시간이 아니다.

사고

경우 인 것을 첫 번째 생각은 한 위에 타임 스탬프 서버 패스로, 시간 서버 기준으로 현지 시간을 수 있도록하는 것입니다. 어떻게 그 동적 시간을 얻으려면? 결국, 당신은 항상 서버 그것에 갈 시간을 얻을 수 없습니다. 거친 생각만큼으로 알고 그것을 추가 동적으로 다음 서버 시간이 너무 긴 얻을합니다. 무엇이 시간 차이를 기록하는 경우?

처음에는 생각에서, 특정 시점을 기록 할 때 서버 시간 (액세스 gainServerTime), 현재 시점과 gainServerTime오랜 통해 얻을 수 뺍니다. 사용자가 시간을 입력 한 후 페이지를 수정하는 경우, 당신은이 문제가 해결되지 않는, 잘못된 시간 차이를 얻을 것이다.

그럼, 타이머의 초 녹화 시간 생각 experienceTime물론, 약간의 성능을 희생, 초당 일을하지만, 문제는 내가 더 나은 방법을 생각할 수 없다.

실현

/ * * 
 * 금회의 오브젝트를 취득 
 파라미터 : ServerTime은 
 * 서버 소인 (들) 
* / 
기능 GetNowDate (ServerTime) {
      .serverTime = || ServerTime 새로운 새 일 ()을 다음 getTime는 ();
     // 경과 시간 기록 
     .experienceTime = 0 ]
     이 본 .init () 
} 
/ * * 
 * 현재 타임 스탬프 얻기, 밀리 
 * / 
GetNowDate.prototype.getTime = 함수 () {
     반환  이 본 .getDateObject ()을 다음 getTime (); 
}; 
/ * * 
 * 현재 시간 날짜 개체를 얻을 수 
 * /
GetNowDate.prototype.getDateObject는 = 함수 () {
     반환  새 새 날짜 ( 다음은이 .getNowMilliTime을 ()); 
}; 
//이 현재의 밀리 초 타임 스탬프 얻을 
GetNowDate.prototype.getNowMilliTime = 함수 () {
     반환 ( 다음은이 .serverTime +를 은이 .experienceTime) * 1000 ] 
} 
//이 객체 초기화 
GetNowDate.prototype.init = 함수 () {
     //는 타이머 동적 증가 시간 설정 
    VAR의 _this를 = 이 본 ; 
    하여 setInterval ( 함수() { 
        _this.experienceTime ++ ; 
    }, 1000 ); 
};

물론, 문제를보고 많이있다, 그리고 경험 후를 완벽하게

클라우드 코드 주소 https://gitee.com/hujingnb/jsTool

 

추천

출처www.cnblogs.com/hujingnb/p/12080293.html