Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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日期以1小时开始_Javascript - Fatal编程技术网

Javascript日期以1小时开始

Javascript日期以1小时开始,javascript,Javascript,我试图创建一个计数器,显示您在站点上花费了多少时间,我使用sessionStorage从多个页面访问Date对象 问题是计数器从01:00:00开始,即使我将日期初始化为00:00:00 这是我的密码: function checkTime(){ if(document.getElementById("clock")[13] == ''){ var d = new Date('2010-06-11T00:00:00'); sessionStorage.se

我试图创建一个计数器,显示您在站点上花费了多少时间,我使用sessionStorage从多个页面访问Date对象

问题是计数器从01:00:00开始,即使我将日期初始化为00:00:00

这是我的密码:

function checkTime(){
    if(document.getElementById("clock")[13] == ''){
        var d = new Date('2010-06-11T00:00:00');
        sessionStorage.setItem('time', d);
    }
}

function updateTime(){
    checkTime();
    var nDate = new Date(sessionStorage.getItem('time'));
    nDate.setSeconds(nDate.getSeconds() + 1);
    sessionStorage.setItem('time', nDate);
    var hours = (nDate.getHours()<10 ? "0" : "") + nDate.getHours();
    var minutes = (nDate.getMinutes()<10 ? "0" : "") + nDate.getMinutes();
    var seconds = (nDate.getSeconds()<10 ? "0" : "") + nDate.getSeconds();
    var timeString = hours + ":" + minutes + ":" + seconds;
    document.getElementById("clock").innerText = timeString;

}
setInterval(updateTime, 1000);
函数检查时间(){
if(document.getElementById(“时钟”)[13]=''){
var d=新日期('2010-06-11T00:00:00');
sessionStorage.setItem('time',d);
}
}
函数updateTime(){
检查时间();
var nDate=新日期(sessionStorage.getItem('time');
数据设置秒(数据设置秒()+1);
sessionStorage.setItem('time',nDate);

var hours=(nDate.getHours()由于您所在的时区(UTC+1 CET中欧时间,斯德哥尔摩),它从01:00开始。 按以下方式创建日期:

const utcDate=new Date(Date.UTC(2019,5,11,0,0,0));//第二个参数是月份索引,它从0开始,所以5表示六月

log(utcDate);
为什么不使用unix时间戳呢?它确实更简单而且不受时区限制

当用户进入网站时

var d = new Date().getTime();
sessionStorage.setItem('time', d);
然后

函数更新时间(){
var nDate=new Date().getTime();
var startDate=sessionStorage.getItem('time');
var持续时间=开始日期;
var秒数=数学下限((持续时间/1000)%60),
分钟=数学楼层((持续时间/(1000*60))%60),
小时=数学楼层((持续时间/(1000*60*60))%24);
小时数=(小时数<10)?“0”+小时数:小时数;
分钟=(分钟<10)?“0”+分钟:分钟;
秒=(秒<10)?“0”+秒:秒;
var timeString=hours+“:”+minutes+“:”+seconds;
document.getElementById(“时钟”).innerText=timeString;
}
setInterval(更新时间,1000);

您必须说明您的本地时区。如果日期字符串上没有尾随的“Z”,浏览器可能会将日期解释为本地而不是UTC。按ID获取元素…13???@RokoC.Buljan我的错误是,我忘记了时钟元素在另一个元素中,所以我现在将其更改为document.getElementById(“时钟”).innerText[7]。
function updateTime(){
    var nDate = new Date().getTime();
    var startDate = sessionStorage.getItem('time');
    var duration = nDate-startDate;
    var seconds = Math.floor((duration / 1000) % 60),
    minutes = Math.floor((duration / (1000 * 60)) % 60),
    hours = Math.floor((duration / (1000 * 60 * 60)) % 24);

    hours = (hours < 10) ? "0" + hours : hours;
    minutes = (minutes < 10) ? "0" + minutes : minutes;
    seconds = (seconds < 10) ? "0" + seconds : seconds;
    var timeString = hours + ":" + minutes + ":" + seconds;
    document.getElementById("clock").innerText = timeString;

}
setInterval(updateTime, 1000);