Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 在Flex中,将日期舍入到最接近的15分钟间隔_Apache Flex_Date_Rounding - Fatal编程技术网

Apache flex 在Flex中,将日期舍入到最接近的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

我正在构建一个控件,允许我设置会议时间,我希望它用作默认值,当前时间四舍五入到最接近的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;
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;返回日期;}