有人可以向我解释以下代码吗?
例如,我想将今天的日期设置为今天(2012年11月21日),结束日期设置为12月3日。
之所以这样,是因为我希望遍历一个项目列表,确定它们是处于“过去”,“现在”还是“未来”,并相应地为它们分配一个类。
我希望这是有道理的!非常感谢任何帮助,非常欢迎!
function daysTilDate(expiredate){
expiredate ="12/"+expiredate+"/2012";
var thisDay=new Date(expiredate);
var CurrentDate = new Date();
var thisYear=CurrentDate.getFullYear();
thisDay.getFullYear(thisYear);
var DayCount=(thisDay-CurrentDate)/(1000*60*60*24);
DayCount=Math.round(DayCount);
return DayCount;
}
答案 0 :(得分:2)
如果要计算过期日期,可以简化以下方法。请注意,如果您没有指定考试日期,则会将当前日期作为考试日期。
function daysTilData(expireDate, testDate) {
if(typeof testDate === "undefined"){
testDate = new Date(); // now
}
var diff = expireDate - testDate;
// minus value meaning expired days
return Math.round(diff/(1000*60*60*24));
}
alert(daysTilData(new Date("12/31/2012")));
// result 40
alert(daysTilData(new Date("12/31/2012"), new Date("1/12/2013")));
// result -12
答案 1 :(得分:1)
以下是逐行解释。
功能声明......
function daysTilDate(expiredate){
使参数expiredate将其设置为等于“12 /”前置且附加“/ 2012”的相同值。因此,如果expiredate的值为“10”,则新值现在为“12/10/2012”......
expiredate ="12/"+expiredate+"/2012";
使用expiredate string ...
实例化一个名为thisDay的新Date对象var thisDay=new Date(expiredate);
使用默认构造函数实例化一个名为CurrentDate的新Date对象,该构造函数将该值设置为等于今天的日期......
var CurrentDate = new Date();
从CurrentDate获取Year部分(之前设置为今天的日期)......
var thisYear=CurrentDate.getFullYear();
从thisDay获取Year段(之前设置为“2012”)...
thisDay.getFullYear(thisYear);
获取thisDay和CurrentDate之间的差异(以毫秒为单位),并将其乘以1000 * 60 * 60 * 24以获得天数差异...
var DayCount=(thisDay-CurrentDate)/(1000*60*60*24);
改变先前计算的差异......
DayCount=Math.round(DayCount);
返回今天和2012年12月传入日之间的差异......
return DayCount;
}
请注意,获得年度细分的2行是无关紧要的,因为这些值从未使用过......
答案 2 :(得分:1)
我不打算检查代码,但我可以回答你的问题“我想循环浏览一个项目列表,确定它们是在过去,现在还是将来”。
首先,您要构建目标日期。如果它是“现在”,只需使用新的Date()。如果是特定日期,请使用新日期(dateString)。
其次,JavaScript中的Date对象具有返回日期特征的各种成员。您可以使用它来比较日期。所以,假设您在数组中包含日期字符串:
function loopDates(targetDateString, myDates) {
var targetDate, nextDate, status, ix;
targetDate = new Date(targetDateString);
for (ix = 0; ix < myDates.length; ++ix) {
nextDate = new Date(myDates[ix]);
if (nextDate.getFullYear() < targetDate.getFullYear()) {
status = "past";
} else if (nextDate.getFullYear() > targetDate.getFullYear()) {
status = "future";
} else {
// Year matches, compare month
if (nextDate.getMonth() < targetDate.getMonth()) {
status = "past";
} else if (nextDate.getMonth() > targetDate.getMonth()) {
status = "future";
} else {
// Month matches, compare day of month
if (nextDate.getDate() < targetDate.getDate()) {
status = "past";
} else if (nextDate.getDate() > targetDate.getDate()) {
status = "future";
} else {
// Day matches, present
status = "present";
}
}
}
console.log("Date " + myDates[ix] + " is " + status + " from " + targetDateString);
}
}
loopDates("11/17/2012", ["11/16/2012", "11/17/2012", "11/18/2012"]);
这将记录:
Date 11/16/2012 is past from 11/17/2012
Date 11/17/2012 is present from 11/17/2012
Date 11/18/2012 is future from 11/17/2012
如果您想使用全面的Date类,请使用DateJS,这是一个开源JavaScript日期和时间处理库,具有一些令人印象深刻的功能。