toLocaleTimeString()返回24小时或12小时的时间?

时间:2014-03-11 14:48:21

标签: javascript

据我所知,我的代码工作得很好(虽然我作为一名业余编码员可以改进)但我办公室里有一台机器似乎与其他机器不同。

在那台电脑上,我的脚本适用于FireFox,但在Chrome上它并不适用。

代码:[取决于一天中的时间,是周末还是工作日隐藏或显示两个div]

var d = new Date();
var t = d.toLocaleTimeString();
var day = d.getDay()%6;

if (t < "08:30:00" || t > "17:30:00" || day == 0 ) {
    document.getElementById("div1").style.display = "none";
    document.getElementById("div2").style.display = "inline";
  } else {
    document.getElementById("div1").style.display = "inline";
    document.getElementById("div2").style.display = "none";
} 

我面临的问题是Chrome在这台特定的计算机上出错了,显示/隐藏了应该显示/隐藏的相反div。

我的问题:

我是否正确计算时间/使用正确的函数等?

我的方法是否与现代相当更新的浏览器兼容?

谢谢。

1 个答案:

答案 0 :(得分:2)

toLocaleTimeString()将在不同的语言环境中有另一个实现。你不应该用它来检查时间。仅用它来向用户显示时间。

您可能需要查看this

您可以使用getHours()getMinutes()来检查时间。

你也可以这样做:

var t1 = new Date(d);
t1.setHours(8);
t1.setMinutes(30);
t1.setSeconds(0);
var t2= new Date(d);
t2.setHours(17);
t2.setMinutes(30);
t2.setSeconds(0);
var day = d.getDay()%6;

if (d < t1 || d > t2 || day == 0 ) {
    document.getElementById("div1").style.display = "none";
    document.getElementById("div2").style.display = "inline";
  } else {
    document.getElementById("div1").style.display = "inline";
    document.getElementById("div2").style.display = "none";
}