我正在構建控件以允許設置會議時間,我希望將其用作默認設置,當前時間四捨五入爲最接近的15分鐘時間間隔。所以如果它現在是6點07分,它會讀取6點15分作爲開始時間。在Flex中將日期精確到最近的15分鐘間隔
有沒有人知道這可能是如何完成的,或者已經穿過代碼snippit,會讓我走上正軌?
我正在構建控件以允許設置會議時間,我希望將其用作默認設置,當前時間四捨五入爲最接近的15分鐘時間間隔。所以如果它現在是6點07分,它會讀取6點15分作爲開始時間。在Flex中將日期精確到最近的15分鐘間隔
有沒有人知道這可能是如何完成的,或者已經穿過代碼snippit,會讓我走上正軌?
試試這個
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點1分到7點15分,而不是7點。它也不會處理日期變化(例如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;
}
謝謝!這很好。我繼續前進並稍微修改它以允許我指定間隔: protected function roundTimeToInterval(date:Date,interval:int):Date { \t var min:Number = date.minutes; \t var h:Number = date.hours; min = min +(interval - min%interval); \t h + = min/60; \t min = min%60; \t date.hours = h; \t date.minutes = min; \t \t返回日期; } – Nick 2009-09-18 11:36:32
-1不正確。請參閱下面的@Martamius答案 – 2011-01-25 22:18:29