2009-09-18 61 views
1

我正在構建控件以允許設置會議時間,我希望將其用作默認設置,當前時間四捨五入爲最接近的15分鐘時間間隔。所以如果它現在是6點07分,它會讀取6點15分作爲開始時間。在Flex中將日期精確到最近的15分鐘間隔

有沒有人知道這可能是如何完成的,或者已經穿過代碼snippit,會讓我走上正軌?

回答

2

試試這個

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()); 
+0

謝謝!這很好。我繼續前進並稍微修改它以允許我指定間隔: 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

-1不正確。請參閱下面的@Martamius答案 – 2011-01-25 22:18:29

1

我發現,與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; 
} 
相關問題