/** * Implements the CFML Function datepart */ package railo.runtime.functions.dateTime; import railo.runtime.PageContext; import railo.runtime.exp.ExpressionException; import railo.runtime.ext.function.Function; import railo.runtime.type.dt.DateTime; public final class DatePart implements Function { private static final long serialVersionUID = -4203375459570986511L; public static double call(PageContext pc , String datepart, DateTime date) throws ExpressionException { return call(pc, datepart, date, null); } public static double call(PageContext pc , String datepart, DateTime date,String strTimezone) throws ExpressionException { datepart=datepart.toLowerCase(); char first=datepart.length()==1?datepart.charAt(0):(char)0; if(datepart.equals("yyyy")) return Year.call(pc,date,strTimezone); else if(datepart.equals("ww")) return Week.call(pc,date,strTimezone); else if(first=='w') return DayOfWeek.call(pc,date,strTimezone); else if(first=='q') return Quarter.call(pc,date,strTimezone); else if(first=='m') return Month.call(pc,date,strTimezone); else if(first=='y') return DayOfYear.call(pc,date,strTimezone); else if(first=='d') return Day.call(pc,date,strTimezone); else if(first=='h') return Hour.call(pc,date,strTimezone); else if(first=='n') return Minute.call(pc,date,strTimezone); else if(first=='s') return Second.call(pc,date,strTimezone); else if(first=='l') return MilliSecond.call(pc, date,strTimezone); throw new ExpressionException("invalid datepart type ["+datepart+"] for function datePart"); } }