Apache flex 在Flex中,将日期舍入到最接近的15分钟间隔
我正在构建一个控件,允许我设置会议时间,我希望它用作默认值,当前时间四舍五入到最接近的15分钟间隔。因此,如果当前是6:07,那么将读取6:15作为开始时间 有没有人知道这是如何实现的,或者有没有人遇到过让我走上正轨的代码窃贼?试试这个Apache flex 在Flex中,将日期舍入到最接近的15分钟间隔,apache-flex,date,rounding,Apache Flex,Date,Rounding,我正在构建一个控件,允许我设置会议时间,我希望它用作默认值,当前时间四舍五入到最接近的15分钟间隔。因此,如果当前是6:07,那么将读取6:15作为开始时间 有没有人知道这是如何实现的,或者有没有人遇到过让我走上正轨的代码窃贼?试试这个 var date:Date = new Date(); var min:Number = date.minutes; var h:Number = date.hours; min = min + (15 - min % 15); h += min / 60; m
var date:Date = new Date();
var min:Number = date.minutes;
var h:Number = date.hours;
min = min + (15 - min % 15);
h += min / 60;
min = min % 60;
date.hours = h;
date.minutes = min;
trace(date.toTimeString());
我发现Amarghosh的答案是它不太圆。示例:它将7:01取整为7:15,而不是7:00。它也不能处理日期的更改(例如,将23:50舍入到第二天),等等 这将实现您想要的功能,同时处理不断变化的天数、月份甚至年份,而且数学计算稍微简单一些:
protected function roundTimeToMinutes( date:Date, interval:int ):Date
{
var time:Number=date.getTime();
var roundNumerator=60000*interval; //there are 60000 milliseconds in a minute
var newTime:Number=( Math.round( time / roundNumerator ) * roundNumerator );
date.setTime(newTime);
return date;
}
谢谢这很有效。我继续进行,并将其稍微修改为以下内容,这允许我指定间隔:受保护的函数roundTimeToInterval(日期:date,interval:int):date{var min:Number=date.minutes;var h:Number=date.hours;min=min+(interval-min%interval);h+=min/60;min=min%60;date.hours=h;date.minutes=min;返回日期;}