0

例如,我正在制作一个 HTML 表格,该表格应该根据使用 JavaScript 的时间隐藏某些部分;

6:30
6:45
7:05

当前时间等于或大于 6:30 时,第一个单元格应隐藏。

我开始的方式是;

var now = new Date(); // 创建日期对象
var h = now.getHours(); // 获取当前小时
var m = now.getMinutes(); //获取当前分钟

然后再后来;

if (h>=6 && m>=30) {
$('table#truetable tr:first').hide();
}

这不起作用(我认为问题出在最后一部分),因为它不会隐藏这个(第一个)单元格,比如说 7:25,因为分钟数不大于 30,这意味着这种方式不会在许多其他情况下不起作用。

我可以解决这个问题吗?我需要用另一种方式吗?

4

4 回答 4

2

按分钟比较:

if( h*60+m/*h:m*/ >= 6*60+30/*6:30*/ ){
}
于 2012-06-30T18:42:03.843 回答
1

最简单的方法是分别在 6 点钟的时候处理这​​种情况:

if (h > 6 || (h == 6 && m >= 30)) {
  // Modify DOM
}
于 2012-06-30T18:47:54.633 回答
1

我编写了一个函数来将hh:mmorhh:mm:ss格式的时间转换为秒。你可以在下面找到它:

function hourConvert(str) {
    //this separates the string into an array with two parts, 
    //the first part is the hours, the second the minutes
    //possibly the third part is the seconds
    str = str.split(":"); 

    //multiply the hours and minutes respectively with 3600 and 60
    seconds = str[0] * 3600 + str[1] * 60;

    //if the there were seconds present, also add them in
    if (str.length == 3) seconds = seconds + str[2];

    return seconds;
}

现在可以很容易地相互比较时间:

if (hourConvert(str) > hourConvert("6:30")) //Do Stuff

在行动中看到它:http: //jsfiddle.net/TsEdv/1/

于 2012-06-30T18:50:33.060 回答
1
var t = new Date()
undefined
t.getHours()
20
t.getHours()>=6
true
h = t.getMinutes()
51
t>=30
true

这确实有效。您的问题是您正在检查时间和分钟,这意味着如果分钟小于 30,它将返回 false。

您的 if 转换为:

any hour bigger than six whose minutes are also bigger than 30

你的 if 条件应该是:

if(h>=6 && m>=30 || h>=7)

或只有数字

if(h*60+m>= 390)
于 2012-06-30T18:53:36.927 回答