001    package railo.runtime.functions.dateTime;
002    
003    import java.util.TimeZone;
004    
005    import railo.commons.date.DateTimeUtil;
006    import railo.runtime.PageContext;
007    import railo.runtime.engine.ThreadLocalPageContext;
008    import railo.runtime.exp.PageException;
009    import railo.runtime.ext.function.Function;
010    import railo.runtime.op.date.DateCaster;
011    import railo.runtime.type.dt.DateTime;
012    import railo.runtime.type.dt.DateTimeImpl;
013    
014    public final class Beat implements Function {
015        private static final double day=86400000;
016        private static final TimeZone BMD=TimeZone.getTimeZone("GMT+1");
017    
018        public static double call(PageContext pc) throws PageException {
019            return call(pc,null);
020        }
021        public static double call(PageContext pc, Object obj) throws PageException {
022            if(obj==null)obj=new DateTimeImpl(pc);
023            
024            TimeZone tz = ThreadLocalPageContext.getTimeZone(pc);
025            DateTime date = DateCaster.toDateAdvanced(obj,tz);
026            return format(date);
027        }
028        public static double format(DateTime date) {
029            
030            long millisInDay=DateTimeUtil.getInstance().getMilliSecondsInDay(BMD,date.getTime());
031            double res = (millisInDay/day)*1000;
032            return ((int)(res*1000))/1000D;
033        }
034    }