0

我正在寻找一个基本上将当前日期时间与列表进行比较的函数。例如,从 8/22/13 的 0700 到 8/29 的 0700,它会返回“Joe Mama - 电话号码 555-5555”,然后从 8/29 的 0700 到 9/5/13 的“0500”,它会返回“安吉爸爸 - 电话号码 555-5555"。这是一个“待命”的时间表。

我能做的最好的事情就是获取日期并进行 == 检查,这需要太长时间,而且只会在午夜发生变化。如果我想按小时完成,我必须每周写 168 个 if/then 语句(一周中的每个小时一个)。

有人认为他们可以为我指明正确的方向吗?肯定不是找人写代码,就是不知道还要找什么其他的词。

编辑(太新,它不会让我回答):

非常感谢ergwin的帮助!对于任何寻找这样的东西的人,这里是最简单的方法(不是最好的,但它有效)。将时间转换为纪元时间(如果您不熟悉,请查阅维基百科)。虽然进行转换有点痛苦,但比较要简单得多。

我在页面注释中链接的站点(所以我不会丢失它),将时间和日期转换为纪元时间,但无论出于何种原因,我不得不在它给我的时间末尾添加三个零。

希望这是有道理的!资料来源:

http://www.epochconverter.com/ http://www.w3schools.com/jsref/jsref_gettime.asp

<HTML>
<script type="text/javascript">

var d = new Date();
var n = d.getTime(); 

document.write(n)


if (n >=  1376913600000 && n <= 1377518400000)
 {
document.write("Joe Momma");
document.write(full)
}
if (n >=  1377518400000 && n <= 1378123200000)
 {
document.write("Angie Daddy");
document.write(full)
 }



</script>
</html>
4

1 回答 1

0

将每个通话开始时间的日期加上结束时间放在一个数组中。然后在当前日期大于索引日期时循环遍历数组,或者如果从末尾循环则小于:

function whosoncall(){
    var oncall= [[1377068400000, 'Joe Mama', '555-5555'], 
    [1377759600000, 'Angie Daddy', '555-5555'], 
    [1378357200000, 'Some Body', '555-5555'], 
    [1378789200000, 'End coverage']];
    var L= oncall.length-1, 
    D= new Date().getTime();

    if(D<oncall[0][0] || D>oncall[L][0]) throw new Error('No oncall for this date');

    while(L && D<oncall[L][0])--L;

    return oncall[L][1]+' phone: '+oncall[L][2];
}
whosoncall();
于 2013-08-22T03:45:24.603 回答