简单的JavaScript计时器:substring或datetime?

时间:2009-11-16 10:27:31

标签: javascript

我有一个格式应该是的标签:“00:00:00”。

此计时器应通过JavaScript倒计时,当计时器为0时,标签中应该有“已结束”。

那么如何处理较少的性能(例如:我有一个有50个定时器的站点,它们需要同步)。

我的想法是通过子字符串和-1分割它,检查它是否为-01,然后减去之前的数字,并再次将其设置为59.

有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

我会使用datetime,并减少秒数。然后会自动修复分钟,小时,天,月,年。然后只需要一个通用的formatDate函数来接收日期时间并根据它输出你的“xx:xx:xx”或“ends”。

根据今天的日期创建一个新的日期时间对象:

var dt = new Date();

将其设置为特定值(请注意月份是枚举,从0开始):

var dt = new Date(2009, 10, 16, 11, 50, 30); // yyyy, mm, dd, hh, mm, ss

减少一秒钟:

dt.setSeconds(dt.getSeconds()-1);

您的转换器:

function dateToString(dt) {
   var h = dt.getHours();
   var m = dt.getMinutes();
   var s = dt.getSeconds();

   // ensure there are always at least two characters
   h = ('0' + h).substring(h.toString().length - 2);
   m = ('0' + m).substring(m.toString().length - 2);
   s = ('0' + s).substring(s.toString().length - 2);

   return h + ':' + m + ':' + s;
}

function stringToDate(s) {
   var dateParts = s.split(':');
   var h = parseInt(dateParts[0], 10);
   var m = parseInt(dateParts[1], 10);
   var s = parseInt(dateParts[2], 10);

   return new Date(2009, 0, 1, h, m, s); // if you're only using time, the date doesn't matter
}