我需要一个功能,可以将传入的参数(日,月,年)与当前日期进行比较。这个函数应该为昨天返回0,当前为1,明天为2,后天为3 ......
我已经有了这个功能:
private function getNumberOfDay(day:int, month:int, year:int):int
{
var date: Date = new Date();
if(date.month+1 == month && date.fullYear == year)
{
if(date.date == day)
return 1;
else if(date.date + 1 == day)
return 2;
else if(date.date + 2 == day)
return 3;
else if(date.date + 3 == day)
return 4;
else if(date.date + 4 == day)
return 5;
else if(date.date + 5 == day)
return 6;
else if(date.date - 1 == day)
return 0;
}
return -1;
}
它到目前为止工作非常好,但现在想象我们当前的日期是2012年12月31日,我称之为:
var numberOfDay:int = getNumberOfDay(1,1,2013);
它应该返回2,但月份与我们当前月份不同(与年份相同)。所以函数返回-1。我能做什么?非常感谢提前!!
http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/Date.html
答案 0 :(得分:4)
使用您创建的功能永远不会得到您想要的东西
您必须基本上将要比较的日期转换为时间戳值
时间戳是从纪元日期开始的毫秒数。 1970年1月1日。
如果你采用时间戳的差异,那么只需要一个简单的过程来计算天数差异。
function getNumberOfDay(day:int, month:int, year:int):int{
// remember month is base 0 so january is 0 and dec is 11
var millisecondsPerDay:int = 24*60*60*1000; //86400000
var testDate:Date = new Date(year,month,day)
var currentDate:Date = new Date()
var days:int = Math.ceil((testDate.getTime() - currentDate.getTime())/millisecondsPerDay);
// return the value plus 1 since you are offseting the from yesterday and not today
return ++days;
}
trace('tomorrow --------------- ' + getNumberOfDay( 4, 5, 2012 )) //2
trace('yesterday -------------- ' + getNumberOfDay( 2, 5, 2012 )) // 0
trace('sometime in the future - ' + getNumberOfDay( 1, 1, 2013 )) // 244
trace('sometime in the past --- ' + getNumberOfDay( 1, 1, 2012 )) // -122
trace('3 days from yesteday --- ' + getNumberOfDay( 5, 5, 2012 )) // 3
答案 1 :(得分:2)
只有一点谷歌给我这个代码
public static function getDaysBetweenDates(date1:Date,date2:Date):int
{
var one_day:Number = 1000 * 60 * 60 * 24;
var date1_ms:Number = date1.getTime();
var date2_ms:Number = date2.getTime();
var difference_ms:Number = Math.abs(date1_ms - date2_ms);
return Math.round(difference_ms/one_day);
}
以上应该有用,我的建议是使用它。如果您想要更正算法,请继续在else
之后添加if (date.fullYear == year)
。
因此,如果执行else
,则表示年份不匹配,然后添加算法以查找不同年份的两个日期之间的天数(这可能会很长)
由于
答案 2 :(得分:0)
您可以尝试以下代码:
我们都知道,2013-11-24 23:59之后的日期是2013-11-25。
public static function getDateOffset2(year:int,month:int,date:int):int
{
var oneDay:Number = 1000 * 60 * 60 * 24;
var now:Date = new Date();
var firstDate:Date = new Date(year,month-1,date);
var secondDate:Date = new Date(now.fullYear,now.month,now.date);
var offset:Number = Math.abs(firstDate.time - secondDate.time);
return offset/oneDay;
}