这个问题的目的是使用内置的Date类来收集日期/时间计算的解决方案,而不是编写冗长的复杂函数。
我会自己写一些答案,如果有人想出一些非常聪明的东西,我会接受答案。但这主要是作为一系列解决方案,因为我经常看到处理日期的代码过于复杂。
请记住,对于Date类无法做的事情的长解决方案,不。
一个好的起点是这里的参考: http://help.adobe.com/en_US/AS3LCR/Flash_10.0/Date.html
答案 0 :(得分:1)
要正确比较需要使用getTime()函数的日期,它将为您提供自1970年1月1日以来的毫秒时间。这样可以轻松地与日期进行比较,以后的日期将返回更大的值。
你可以从另一个中减去一个来获得差异,但不幸的是,没有内置的时间跨度类来干净地处理这个问题。你将不得不使用一些数学来恰当地向用户呈现差异(例如,将差异除以一天中的数字毫秒来得到天数的差异)。
var date1:Date = new Date(1994, 12, 24);
var date2:Date = new Date(1991, 1, 3);
if(date1.getTime() > date2.getTime())
trace("date1 is after date2");
else
trace("date2 is after or the same as date1");
答案 1 :(得分:1)
通过使用Date类,您可以轻松找出一年是否是闰年,而无需编写规则的所有例外情况。通过从第1个市场减去一天(请求市场排名第0),您可以找到2月份的天数。
请记住,月份为零索引,因此Marts作为第3个月的索引为2。
function CheckIfYearIsLeapYear(year:uint):Boolean
{
return new Date(year, 2, 0).Date == 29;
}
答案 2 :(得分:1)
还有ObjectUtil.dateCompare(a,b)
答案 3 :(得分:0)
要获取当前系统日期,只需创建一个新的Date对象,而不将任何值传递给构造函数。像这样:
var today:Date = new Date();
trace("The date and time right now is: " + today. toLocaleString());
trace("The date right now is: " + today. toLocaleDateString());
trace("The time right now is: " + today. toLocaleTimeString());
答案 4 :(得分:0)
内置的Date类可以很好地处理“溢出”,这可以用来添加或减去时间。如果其中一个字段溢出,则日期类通过添加或减去溢出来处理它。
var date:Date = new Date(1993, 12, 28);
trace("7 days after the " + date.toLocaleDateString());
date.setDate(date.Date + 7);
trace("It was the " + date.toLocaleDateString());