Javascript increment number..missing logic
这里需要一些逻辑或算法:
我想使用javascript实现一个简单的计数器,它每天添加rand()int(忽略页面加载),并在不使用任何数据库的情况下存储该数字…它没有从0开始,但必须每天递增。示例:2050。第二天:2053……等等。
我正在考虑使用javascript日期函数,因为年份在增加,月份在增加(每年),但是天设置为每月1。那么,我能用什么样的算法或javascript函数来实现这个功能呢?
最好有rand()函数,它只递增,但不是每天都加载页面。也许这是个愚蠢的问题,但现在是星期六,我的大脑不再工作了。:)非常感谢!
更新:gettime()有点作用,但它给了我类似8176870165464的smth,最后的数字是毫秒,所以它们变化太频繁了..我每天需要增加+1或+3(或相对较小的int).最后的计数器是4位,smth是2040,而不是345346345355
您可以使用当前日期。要使其增加,只需计算过去某一天以来的天数。
- 哈,这就是我需要的!完全忘记了给定日期后的计算天数。星期六对我有效……谢谢!
- 不客气。请随意将答案设置为"已接受";)
- 我会,等待有人提出一个天才的算法:)你的解决方案简单而且有效,prob会使用它:)
如果您只需要一个每24小时递增的数字,请使用当前时间。javascript的Date.getTime()返回1970年以来的毫秒数。如果你只想让它每24小时改变一次,只要把它返回的数字除以24*60*60*1000。(请注意,在闰秒和夏令时的情况下,一天中可能有多于或少于24小时。)
- 复制同样的注释:它给了我类似8176870的smth,最后的数字是毫秒,所以它们变化太频繁了..我需要每天增加+1或+3(或相对较小的int).如果我最初没有指定,对不起..
- 如果你把这个数字除以24*60*60*1000,它每天只会改变一次。
-
它需要是随机的吗?还是只是增加?以下每天增加1:
1
| date = Math.floor(Date().getTime() / (24*60*60*1000)); |
编辑:用一个DIV替换上面的mod(或者至少是一个hack来获取一个DIV,因为JS不支持DIV)
如果它需要是随机的(在不可预测的意义上),您需要这样做:
1
| nr = nr * 100 + yourrandomfunction(nr,100) |
号
其中,yourrandomfunction返回给定种子"nr"和最大"100"的随机数。但不幸的是,您需要自己构建:
在javascript中播种随机数生成器
- 我喜欢它,但它给了我类似8176870的smth,最后的数字是毫秒,所以它们变化太频繁了..我需要每天增加+1或+3(或相对较小的int).如果我最初没有指定,对不起..
- 嘿,愚蠢的错误,我用了模,而不是整数除法,我会解决的。
数字必须是全局唯一的吗?每个用户唯一?它能为用户重复吗?
不管是哪种方式,您都必须将其存储在cookie中,或者将其存储在服务器上的某个地方。如果它在您的服务器上,那么让javascript生成它没有意义,只需要让您的服务器端语言选择它就行了。
- 它可以重复,所有用户每天都会看到相同的号码
- 你应该发表这些问题作为评论。
- 那么你肯定不想要javascript——那纯粹是客户端的。你会让每一个访问你网站的人都试图生成一个数字,让你的服务器记住它——只需在服务器上生成这个数字,并将其与你的页面一起提供。