2017-12-28 11 views
0

특정 프로모션이 끝날 때 표시 할 마운드를 만들 필요가 있습니다. Google 태그 관리자를 통해 프런트 엔드에 액세스해야합니다. 먼저 서버를 가져올 수 있습니다. 시간이 js로, 이제는 서버 시간과 현지 시간을 기반으로 카운트 다운 시간을 설정해야합니다.서버 시간을 기준으로 카운트 다운을 만듭니다

<script> 
    // it´s giving the correct hour 
    var getserver = new Date(); 
getserver.setHours(getserver.getHours()); 
var newtets = getserver.toUTCString(); 
alert(newtets); 



// using a basic countdown 
    var countDownDate = new Date("Sep 5, 2018 15:37:25").getTime(); 

    // Update the count down every 1 second 
var x = setInterval(function() { 

// Get todays date and time 
var now = new Date().getTime(); 
/* 
var now = new Date(); 
now.setHours(now.getHours()); 
var newnow = now.toUTCString(); 
i tried to replace now with newnow but is not working, how can i transform this 
*/ 


// Find the distance between now an the count down date 
var distance = countDownDate - now; 

// Time calculations for days, hours, minutes and seconds 
var days = Math.floor(distance/(1000 * 60 * 60 * 24)); 
var hours = Math.floor((distance % (1000 * 60 * 60 * 24))/(1000 * 60 * 60)); 
var minutes = Math.floor((distance % (1000 * 60 * 60))/(1000 * 60)); 
var seconds = Math.floor((distance % (1000 * 60))/1000); 

// Output the result in an element with id="demo" 
document.getElementById("demo").innerHTML = days + "d " + hours + "h " 
+ minutes + "m " + seconds + "s "; 

// If the count down is over, write some text 
if (distance < 0) { 
    clearInterval(x); 
    document.getElementById("demo").innerHTML = "EXPIRED"; 
    } 
}, 1000); 

</script> 

var now = new Date(). getTime(); 시간을 가져 와서 카운트 다운에 사용하는 것입니다. 로컬 시간이 걸립니다. var = new Date(). getTime(); 1 스크립트로 얻은 서버 시간이됩니다.

답변

1

업데이트 된 서버 시간을 얻는 유일한 방법은 ajax 호출을 사용하는 것입니다. 문제는 서버에 대한 요청이 즉각적이지 않아 지연이 발생한다는 것입니다.

아마 사용자 시간대를 얻고이 정보로 끝나는 프로모션을 계산하는 것이 더 나을 것입니다.

당신은 사용자 시간대 사용하여 오프셋을 얻을 수 있습니다 :

var offset = new Date().getTimezoneOffset(); 
+0

내가 시간을 편집 서버와 일치하는 데 필요한 플러스 시간을 추가 할 수 있지만 문제는 내가 할 수없는이가 다른 나라위한 것입니다 수 있습니다 그 예를 들어, 서버의 스페인 시간, 내가 중앙 아메리카에서 표시됩니다 이것은 왜 내가 오직 서버 시간이 필요 이유입니다 –

+0

하지만 시간은 사용자 로컬 시간을 사용하여 표시해야합니다, 안 그래? 나는 가장 좋은 해결책은 사용자 timezone offset을 서버 시간에 추가하고 viceversa를 추가하지 않는 것이라고 생각한다. –

+0

새 Date()를 사용합니다. getTimezoneOffset(); 새로운 Date()를 대체합니다. getTime(); 잘못된 날짜를 제공하고 있습니다. 정확하게 사용하는 방법을 설명 할 수 있습니까? var countDownDate = new Date ("Dec 28, 2017 23:59:59")로 테스트를 실행하고 있습니다. getTimezoneOffset(); 일치하지만 작동하지 않는지 확인하려면 –

관련 문제