Javascript 需要数学日期算法

Javascript 需要数学日期算法,javascript,algorithm,date,Javascript,Algorithm,Date,令人尴尬的是,我需要一个小算法 我正在帮助一个网站,它在7月1日显示gif B,3日显示C,5日显示a。然后在第七天再换一次b,依此类推——a、b、c每第二天早上8点换一次 那么,我如何使用一个简单的算法使这个脚本返回0、1或2,这取决于7月1日之后的天数 var startDate=新日期(2012,6,1,8,0,0); var pics=[“b.gif”、“c.gif”、“a.gif”]; 日变化率=24*60*60*1000; 函数getDateDiff(开始日期、结束日期){ var

令人尴尬的是,我需要一个小算法

我正在帮助一个网站,它在7月1日显示gif B,3日显示C,5日显示a。然后在第七天再换一次b,依此类推——a、b、c每第二天早上8点换一次

那么,我如何使用一个简单的算法使这个脚本返回0、1或2,这取决于7月1日之后的天数

var startDate=新日期(2012,6,1,8,0,0);
var pics=[“b.gif”、“c.gif”、“a.gif”];
日变化率=24*60*60*1000;
函数getDateDiff(开始日期、结束日期){
var diff=endDate.getTime()-startDate.getTime();
返回数学圆(差异/每日);
}
document.write(“
”+getDateDiff(startDate,newdate());
您需要在此处使用:

document.write(“
”+getDateDiff(startDate,new Date())%3);
试试这个:

var startDate = new Date(2012, 6, 1, 8, 0, 0);
var pics = ["b.gif", "c.gif", "a.gif"];
var aDay = 24 * 60 * 60 * 1000;

function getDateDiff(startDate, endDate) {
    var diff = endDate.getTime() - startDate.getTime();
    return Math.round(diff / aDay);
}
document.write('<br/>' + pics[Math.floor(getDateDiff(startDate, new Date()) / 2) % 3]);
var startDate=新日期(2012,6,1,8,0,0);
var pics=[“b.gif”、“c.gif”、“a.gif”];
日变化率=24*60*60*1000;
函数getDateDiff(开始日期、结束日期){
var diff=endDate.getTime()-startDate.getTime();
返回数学圆(差异/每日);
}
编写(“
”+pics[Math.floor(getDateDiff(startDate,newdate())/2)%3]);
。。。模3?我不理解这个问题,否则,你的代码工作得很好。@minitech modulo 3只在图像每天都在变化时工作。但它们每两天都在变化。这使它变得有点困难。看霍皮的回答。@freakish:。。。除以二,模3?你说得对,这有点难。@minitech你在问我吗?:)我从一开始就知道答案。啊,但是有一个小问题。如果将(例如)除以
(11/2)%3会怎么样?您将获得
2.5
。在取模之前,您需要用(例如)
parseInt
包装所有内容。@freakish:Not
parseInt
,这是用于解析字符串的。使用
Math.floor
。或
(x | 0)
。(是的,
parseInt
可以工作。但感觉不对。无论如何,这是对的。)@minitech显然你不知道
parseInt
也适用于数字。而且它比
Math.floor
(x | 0)
@freakish更有效:事实上,我对前者了如指掌。后者我不知道,部分原因是在我的浏览器上,如果在主流浏览器上不是这样的话,那么除了语义之外,使用一个对另一个没有任何意义,而且当在四舍五入浮点的上下文中说话时,
parseInt
也没有意义。只是个人喜好:)@minitech哦,你说得对。事实上,我看到的是类似的数字,不知怎的,我认为它们显示的是时间,而不是运算/秒。我站直了-1:不幸的是,这并不像看上去那么明显。仔细阅读问题和答案。
document.write('<br/>'+getDateDiff(startDate,new Date())%3);
var startDate = new Date(2012, 6, 1, 8, 0, 0);
var pics = ["b.gif", "c.gif", "a.gif"];
var aDay = 24 * 60 * 60 * 1000;

function getDateDiff(startDate, endDate) {
    var diff = endDate.getTime() - startDate.getTime();
    return Math.round(diff / aDay);
}
document.write('<br/>' + pics[Math.floor(getDateDiff(startDate, new Date()) / 2) % 3]);