javascript - 如何设置自动 "Quote of the day"?

标签 javascript html xml

我负责一个网站,我设置了一个目前相当简单的“每日报价”。 See Here (页面右侧)

它目前所做的是获取月中的第几天和月份,并将其归一化为 1,然后乘以引号数(存储在 xml 文件中)并向下舍入。虽然无论我在哪台机器上,这种方法都会给我相同的报价(这是随机数生成器永远做不到的),但有人向我指出这种方法有缺陷。如果您考虑 1 月,前几个报价将是相同的,1*1/360、2*1/360、3*1/360,因此报价不是唯一的。

谁能想出更好的方法来选择当天的名言?

最佳答案

有趣的问题。为什么不计算自给定日期以来的天数,而不是依赖一个月中的天数? JS 为此提供了一个非常好的属性:getTime(),它为您提供自 1970 年 1 月 1 日世界标准时间凌晨 12 点以来的毫秒数,您可以通过一些简单的除法将其转换为天数。

唯一使它复杂化的是,如果您希望您的报价在午夜发生变化(谁不会呢?),您必须考虑时区。同样,JS 提供了 getTimezoneOffset(),它给出了与 UTC 相比用户语言环境提前或落后的分钟数。如果您希望所有用户同时翻转,无论他们住在哪里,只需将其设置为静态值即可。

您的代码可能如下所示:

var intQuoteCount = 51; // The number of quotes in your library
var dtNow = new Date();
var intTZOffset = dtNow.getTimezoneOffset() * 60000; // automatically adjust for user timezone
var intNow = dtNow.getTime() - intTZOffset;
var intDay = Math.floor(intNow / 86400000); // The number of 'local' days since Jan 1, 1970
var intQuoteToDisplay = intDay % intQuoteCount;

关于javascript - 如何设置自动 "Quote of the day"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3865173/

相关文章:

javascript - 开 Jest : How to test function that returns a function

javascript - 在显示主要内容之前向所有页面添加预加载器页面

jquery - jQuery Accordion 和 IE7 的分层问题

html - 如何将 CSS 复制到 Chrome 中的另一个选项卡?

python - 使用 python 创建循环来查找 pom.xml 文件中的依赖项

javascript - 在每个函数中使用 jquery 数据属性

html - 如何放入相同的(标签)文本行 : input ? 图像

sql-server - 如何从 SQL Server 中的 XML 列获取所有数据

java - 使用android中的添加按钮动态地将editTexts添加到布局

javascript - 带有字符串键的动态 json 对象