我的代码如下`
-----------这是问题代码------
秒
today="<?php echo time();?>"//获取服务器时间
timeold=(today-1488276882);//时间差=today时间戳-开始时间戳
function show_date_time(){
window.setTimeout("show_date_time()", 1000);//每隔1秒运行一次show_date_time()函数
//86400是一天的秒数
e_daysold=timeold/86400// 浮点天=时间差/一天的秒数
daysold=Math.floor(e_daysold);// 向下取整计算多少整数天
e_hrsold=(e_daysold-daysold)*24;// 过了几浮点小时=(浮点天数-整数天数)*24
hrsold=Math.floor(e_hrsold);// 把浮点小时的小数舍去
e_minsold=(e_hrsold-hrsold)*60;// 过了几浮点分钟=(浮点小时-整数小时)*60
minsold=Math.floor(e_minsold);// 把浮点分钟的小数舍去
seconds=Math.floor((e_minsold-minsold)*60);// 浮点秒=(浮点分钟-整数分钟)*60
span_dt_dt.innerHTML=daysold+"天"+hrsold+"小时"+minsold+"分"+seconds;
timeold=(timeold+1)//timeold=服务器时间+1
}
show_date_time();
`
-----------这是问题代码------
-----------这是修改了today的获取方式的正常代码------
本博已运行秒
today=new Date();//取本地时间
todayms=today.getTime()//取本地时间戳
timeold=(todayms/1000-1488276882);//时间差=today时间戳-开始时间戳
function show_date_time(){
window.setTimeout("show_date_time()", 1000);//每隔1秒运行一次show_date_time()函数
e_daysold=timeold/86400// 浮点天=时间差/一天的秒数
daysold=Math.floor(e_daysold);// 向下取整计算,计算整数多少天
e_hrsold=(e_daysold-daysold)*24;// 过了几浮点小时=(浮点天数-整数天数)*24
hrsold=Math.floor(e_hrsold);// 把浮点小时的小数舍去
e_minsold=(e_hrsold-hrsold)*60;// 过了几浮点分钟=(浮点小时-整数小时)*60
minsold=Math.floor(e_minsold);// 把浮点分钟的小数舍去
seconds=Math.floor((e_minsold-minsold)*60);// 浮点秒=(浮点分钟-整数分钟)*60,舍去小数
span_dt_dt.innerHTML=daysold+"天"+hrsold+"小时"+minsold+"分"+seconds;
timeold=(timeold+1)//timeold=服务器时间+1
}
show_date_time();
-----------这是修改了today的获取方式的正常代码------
本想简化代码只留下秒方便各位看,但是发现只留下秒就没有明显的延迟了,而且如果把today变量改成today=new Date();从本地获取时间就没问题了,但是本地是不准的,想从服务器获取,而且我的代码只有第一次运行的时候调用了today,第二次运行完全是本地js自行加秒数,为什么还会有这么大的延迟。很不解。
运行环境在本地和云端都测试了都是有延迟。
延迟是不规律的加秒数,有时候1秒运行一次,有时候两秒运行一次。
具体效果各位可以本地创建test.php运行。按道理可能是js运行效率慢,可是这无法解释为什么同样的代码只是改变today的获取方式从服务器获取改成本地就没有延迟了。