![](/img/trans.png)
[英]How to use momet js in EJS views, but get the users local time and not servers?
[英]How to get servers time
好的,所以我需要倒計時服務器午夜,因為當服務器到達午夜時,它將運行與用戶相關的cronjob,因此他們需要查看還有多少小時才到服務器午夜,而不是自己時區。
示例頁面在這里
date_default_timezone_get();
是歐洲/哥本哈根
PHP
(Ajax請求的頁面)
echo time() * 1000;
使用Javascript
(function () {
var test = document.getElementById("test");
var difference = document.getElementById("difference");
var serverMilli = document.getElementById("serverMilli");
var serverCountdown = document.getElementById("serverCountdown");
var machineMilli = document.getElementById("machineMilli");
var machineCountdown = document.getElementById("machineCountdown");
let serverTime;
var localTime;
var http = new XMLHttpRequest();
var url = "time.php";
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function () {
if (http.readyState === 4 && http.status === 200) {
serverTime = this.responseText;
}
;
};
http.send();
function countDownServer() {
var now = new Date();
var localTime = now.getTime();
var currentDiff = serverTime - localTime;
var currentTest = serverTime - currentDiff;
var currentTime = currentTest;
var eventDate = new Date();
eventDate.setDate(now.getDate() + 1);
eventDate.setHours(24);
eventDate.setMinutes(0);
eventDate.setSeconds(0);
eventDate.setMilliseconds(0);
var eventTime = eventDate.getTime();
var remainingTime = eventTime - currentTime;
var sekunder = Math.floor(remainingTime / 1000);
var minutter = Math.floor(sekunder / 60);
var timer = Math.floor(minutter / 60);
sekunder %= 60;
minutter %= 60;
timer %= 24;
sekunder = (sekunder < 10) ? "0" + sekunder : sekunder;
minutter = (minutter < 10) ? "0" + minutter : minutter;
timer = (timer < 10) ? "0" + timer : timer;
var testServer = timer + ":" + minutter + ":" + sekunder;
serverCountdown.textContent = testServer;
setTimeout(countDownServer, 1000);
}
countDownServer();
})();
一切“ kinda”都能正常工作...問題是,如果我更改計算機上的時區,直到午夜,它會比在服務器上顯示更長的時間? 當服務器上的時區是Europe / Copenhagen並且我使用time()時,這怎么可能? 它不應該使用服務器時區嗎?
否,因為javascript在您的瀏覽器中執行,它將使用您計算機的時區。
您必須告訴javascript您想要哪個時區(如果不是您的時區)
我為您找到了這個:
JavaScript Date
對象始終使用用戶的計算機時間。 您可以使用Moment Timezone之類的庫來設置可以在客戶端上計算的其他時區。
否則,您可以嘗試計算服務器時間與本地時間之間的時差,但由於DST的不同,每年可能會相差一小時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.