号码每 24 小时更改一次



我想提供一个大约 40 个正数的列表,然后让我的主页显示第一个数字。 然后在午夜,号码将更改为列表中的下一个号码。 当位于列表末尾时,轮换将重新开始。 例如,一个用户今天多次访问我的页面,并看到列表中的第一个数字。 然后说凌晨 1:00,他们回到页面并看到列表中的下一个数字,并将这样做直到明天晚上午夜......等等等等,这可能吗?

我已经尝试了几种不同的 javascript,它们确实会根据我的列表更改数字,但是当用户转到该页面时,它会重新开始列表。

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

我说得通吗?

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

您可以使用

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

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

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()给了格林威治标准时间。

最新更新