我刚刚创建了一个函数的两个版本,它们可用于处理日期和时间并将其返回到不同的HTML元素。这些元素将显示在手机锁屏中。该函数每秒调用一次,以确保它在时间上跳转到下一分钟。
- v。1一次工作:每秒处理每一个时间单位(秒、分、日、月等)。
- v。2分步工作:如果秒的数字在任何时候都是"0"处理分钟。然后,如果分钟为"0"处理小时等。
我希望v2更快,但根据我在这里做的测试:http://jsperf.com/timecalccompare它慢了大约90% !是真的比较慢还是测试不可靠?
我会使用更简单的方法,但在更新视图和执行其余计算之前,还要检查分钟是否实际发生了变化:
也绝对没有理由在每次迭代中声明月份和日期数组,所以:
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var lastMinute = null;
function Update()
{
var now, minutes, hours, day, date, month, daypart = "AM";
now = new Date();
minutes = now.getMinutes();
if(minutes == lastMinute) return;
hours = now.getHours();
day = days[now.getDay()];
date = now.getDate();
month = months[now.getMonth()].substring(0, 3);
if(minutes < 10) minutes = "0" + minutes;
if(hours > 12) {
hours -= 12;
daypart = "PM";
}
if(hours == 0) hours = 12;
$("#clock").text(hours + ":" + minutes + " " + daypart);
$("#day").text(day);
$("#date").text(date + " " + month);
lastMinute = minutes;
}
你的第二个版本只是坏了,没有做任何接近它应该做的事情。如果增加秒数不会使它们为零,则需要停止处理,而不是继续进行更多的测试。
建议:尽量减少DOM访问次数
你的分步脚本不工作!