Flex令我疯狂,我认为它是如何处理闰年和没有闰年的奇怪问题。所以这是我的例子。我有下面的dateDiff方法来查找两个日期之间的天数或毫秒数。如果我运行以下三条语句,我会遇到一些奇怪的问题。奇怪的弹性日期问题
dateDiff("date", new Date(2010, 0,1), new Date(2010, 0, 31));
dateDiff("date", new Date(2010, 1,1), new Date(2010, 1, 28));
dateDiff("date", new Date(2010, 2,1), new Date(2010, 2, 31));
dateDiff("date", new Date(2010, 3,1), new Date(2010, 3, 30));
如果您要查看上面的日期比较,您期望获得30,27,30和29作为日期之间的天数。奇怪的部分是,比较3月1日至3月31日,我得到29。为什么?这与2月份只有28天有关吗?如果有人对此有任何意见,将不胜感激。
public static function dateDiff(datePart:String, startDate:Date, endDate:Date):Number
{
var _returnValue:Number = 0;
switch (datePart) {
case "milliseconds":
_returnValue = endDate.time - startDate.time;
break;
case "date":
// TODO: Need to figure out DST problem i.e. 23 hours at DST start, 25 at end.
// Math.floor causes rounding down error with DST start at dayOfYear
_returnValue = Math.floor(dateDiff("milliseconds", startDate, endDate)/(1000 * 60 * 60 * 24));
break;
}
return _returnValue;
}
太棒了!非常感谢您发布代码示例。这完美地解决了我的问题。 – CodeMonkey 2009-06-29 17:43:52