簡體   English   中英

如何獲得服務器時間

[英]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獲取特定時區的時間?

JavaScript Date對象始終使用用戶的計算機時間。 您可以使用Moment Timezone之類的庫來設置可以在客戶端上計算的其他時區。

否則,您可以嘗試計算服務器時間與本地時間之間的時差,但由於DST的不同,每年可能會相差一小時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM