我知道有很多这样的话题,但是我遇到的问题是我找不到答案.
我的脚本是:
window.onload = function(){
// 200 seconds countdown
var countdown = 14400;
//current timestamp
var now = Date.parse(new Date());
//ready should be stored in your cookie
if ( !document.cookie )
{
document.cookie = Date.parse(new Date (now + countdown * 1000)); // * 1000 to get ms
}
//every 1000 ms
setInterval(function()
{
var diff = ( document.cookie - Date.parse(new Date()) );
if ( diff > 0 )
{
var message = diff/1000 + " seconds left";
}
else
{
var message = "finished";
}
document.body.innerHTML = message;
},1000);
}
我想做一个倒数计时器,它告诉用户剩余的时间取决于他的cookie值.到目前为止,我设法计算了两个值之间的差,但是我不知道如何根据差值时间戳记(diff)使格式类似“ dd / mm / yy hh:mm:ss”.有可能吗?
解决方法:
您想要的是一个将(mili)秒的差异转换为类似内容的函数
5d 4h 3m 2s
如果您不介意时间段内有大量的天数,则>几个月,那么您可以使用以下方法:
function human_time_difference(diff) {
var s = diff % 60; diff = Math.floor(diff / 60);
var min = diff % 60; diff = Math.floor(diff / 60);
var hr = diff % 24; diff = Math.floor(diff / 24);
var days = diff;
return days + 'd ' + hr + 'h ' + min + 'm ' + s + 's';
}
如果您有毫秒数的差异,则需要将该数字除以1000.您还可以使用Math.round除去分数,但是如果希望显示这些信息,也可以将它们保留为开.
几个月和几年变得有些棘手,原因有两个:
>一个月中的天数会有所不同.
>从一个月中旬到下一个月中旬,即使天数> 31(例如,6月2日到7月30日之间有多少个月?).
如果您确实想要两次之间的月份数,那么两次之间的秒数是不够的.您必须使用日历逻辑,这需要传递开始和结束日期时间.
PS:发布问题时,请避免使用无关的详细信息.例如,您的问题与Cookie,setInterval或onload处理程序无关.您唯一不知道的部分是如何将(mili)秒转换为天,小时等.提供一些有关您为何要执行某项操作的背景可能会有所帮助,但是如果不需要了解基本问题,将它放在最后,这样人们就不必在进入关键部分之前就去研究它.同样的建议也适用于您的头衔.排除不相关的细节(例如cookie和倒数),以确保其相关性.