Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获得服务器时间_Javascript_Php_Ajax_Datetime - Fatal编程技术网

Javascript 如何获得服务器时间

Javascript 如何获得服务器时间,javascript,php,ajax,datetime,Javascript,Php,Ajax,Datetime,好的,所以我需要服务器午夜倒计时,因为当服务器达到午夜时,它将运行一个与用户相关的cronjob,因此他们需要查看服务器上到午夜还有多少小时,而不是在他们自己的时区 样本页 date\u default\u timezone\u get()是欧洲/哥本哈根吗 PHP (Ajax请求的页面) Javascript (function () { var test = document.getElementById("test");

好的,所以我需要服务器午夜倒计时,因为当服务器达到午夜时,它将运行一个与用户相关的cronjob,因此他们需要查看服务器上到午夜还有多少小时,而不是在他们自己的时区

样本页

date\u default\u timezone\u get()是欧洲/哥本哈根吗

PHP

(Ajax请求的页面)

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();
                })();
(函数(){
var测试=document.getElementById(“测试”);
var差异=document.getElementById(“差异”);
var serverMilli=document.getElementById(“serverMilli”);
var serverCountdown=document.getElementById(“serverCountdown”);
var machineMilli=document.getElementById(“machineMilli”);
var machinecocountdown=document.getElementById(“machinecocountdown”);
让我们慢慢来;
var本地时间;
var http=new XMLHttpRequest();
var url=“time.php”;
http.open(“POST”,url,true);
http.setRequestHeader(“内容类型”、“应用程序/x-www-form-urlencoded”);
http.onreadystatechange=函数(){
如果(http.readyState==4&&http.status==200){
serverTime=this.responseText;
}
;
};
http.send();
函数countDownServer(){
var now=新日期();
var localTime=now.getTime();
var currentDiff=serverTime-localTime;
var currentTest=服务器时间-currentDiff;
var currentTime=currentTest;
var eventDate=新日期();
eventDate.setDate(现在是.getDate()+1);
eventDate.setHours(24);
eventDate.setMinutes(0);
eventDate.setSeconds(0);
eventDate.setmillizes(0);
var eventTime=eventDate.getTime();
var remainingTime=事件时间-当前时间;
var sekunder=数学楼层(剩余时间/1000);
var Mintter=数学楼层(sekunder/60);
var定时器=数学楼层(分钟/60);
sekunder%=60;
分钟数%=60;
计时器%=24;
sekunder=(sekunder<10)?“0”+sekunder:sekunder;
分钟器=(分钟器<10)?“0”+分钟器:分钟器;
定时器=(定时器<10)?“0”+定时器:定时器;
var testServer=timer+“:”+mintter+“:”+sekunder;
serverCountdown.textContent=testServer;
设置超时(countDownServer,1000);
}
countDownServer();
})();
一切都“有点”正常。。。问题是,如果我在我的计算机上更改时区,它将显示比服务器上实际更长的小时数,直到午夜?
当服务器上的时区是europe/copenhagen并且我使用time()时,这怎么可能呢?它是否应该使用服务器时区?

否当javascript在浏览器中执行时,它将使用计算机的时区

您必须告诉javascript您想要哪个时区(如果不是您的时区)

我为你找到了这个:


JavaScript
Date
对象始终使用用户的计算机时间。您可以使用类似库的方法来设置可以在客户端上计算的不同时区


否则,您可以尝试计算服务器时间和本地时间之间的差异,但由于DST的差异,它可能会每年关闭几次,每次关闭一小时。

我将研究它,但当我使用AJAX获取服务器时间时()*1000并在javascript的其余部分使用它,如果它不正确?@Javaish如果您将服务器时间传递给客户端并从中创建一个
Date
对象,则日期将正确,但时区将不同,这意味着客户端将看到一天中不同的时间,尽管它代表着同一个时刻,好吧,我还需要进一步研究这个问题。。这让我很困惑,占用了我太多的时间:/@Javaish想想吧。如果我在洛杉矶,你在纽约,这里可能是下午1:35,而那里可能是下午4:35。我们俩的时间相同,unix时间戳相同,手表上的数字也不同。我会仔细研究一下,但我不明白为什么time()不能为服务器timezonetime()返回正确的秒数应该返回一个UNIX时间戳,因此您需要计算时区表的值,这比我最初认为的要复杂得多。。。好吧,我必须调查一下:
            (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();
                })();