每24小时更换一次

时间:2012-12-06 14:46:26

标签: javascript jquery css xhtml

我想提供一个大约40个正数的列表,然后让我的主页显示第一个数字。然后在午夜,号码将变为列表中的下一个号码。在列表的末尾,旋转重新开始。因此,例如,用户今天多次访问我的页面并查看列表中的第一个数字。然后说凌晨1点,他们回到页面,看到列表上的下一个号码,明天晚上才会这样做......等等等这可能吗?

我尝试了几种不同的javascripts根据我的列表改变了数量但是当用户进入页面时,它再次启动列表。

我对此很陌生,我不知道你可能需要我的代码的哪一部分,因为我一直在尝试做它应该做的事情......而不是我想要它做什么。

我有道理吗?

不幸的是,我无法在这个网页上使用php。

2 个答案:

答案 0 :(得分:1)

定义开始日期(最好是过去),计算今天的日期,减去两个,然后用模数将其挤压到你想要显示的数字范围内:

var minDate = 15681, // days since 1-1-1970
nowDate = Math.ceil(new Date().getTime() / 1000 / 86400),
numbers = [1, 5, 1234, 6543, 1236456];

// get the number for today
console.log(numbers[(nowDate - minDate) % numbers.length]);

如果开始日期无关紧要,您可以将表达式简化为:

 numbers[Math.ceil(new Date().getTime() / 86400000) % numbers.length];
顺便说一句,这对于每个人来说都不会在午夜时分发生变化,因为.getTime()给出了GMT时间。

答案 1 :(得分:1)

您可以使用new Date().getTime()以毫秒为单位获取当前时间。如果将其转换为天数并向下舍入,则可以找到自纪元以来的天数。取其模数并使用它来获取数组数组的索引。由于您总是使用当前时间(根据用户),您不需要存储任何cookie或服务器端计数器。

var nums = [1,1,2,3,5,8,13]; // and so on
    d = new Date(), // today
    days = d.getTime() / (1000*60*60*24), 
    idx = Math.floor(days) % nums.length;
alert(nums[idx]); // should change once a day