/** * Implements the CFML Function monthasstring */ package railo.runtime.functions.string; import java.text.DateFormatSymbols; import java.util.Calendar; import java.util.Date; import java.util.Locale; import railo.commons.date.JREDateTimeUtil; import railo.runtime.PageContext; import railo.runtime.exp.ExpressionException; import railo.runtime.ext.function.Function; import railo.runtime.i18n.LocaleFactory; public final class MonthAsString implements Function { private static final int MONTH=1000*60*60*24*32; private static Date[] dates=new Date[12]; static { Calendar cal=JREDateTimeUtil.getThreadCalendar(); cal.setTimeInMillis(0); dates[0]=cal.getTime(); for(int i=1;i<12;i++) { cal.add(Calendar.MONTH,1); dates[i]=cal.getTime(); } } public static String call(PageContext pc , double month) throws ExpressionException { return call(month, pc.getLocale()); } public static String call(PageContext pc , double month, String strLocale) throws ExpressionException { return call(month, strLocale==null?pc.getLocale():LocaleFactory.getLocale(strLocale)); } private static String call(double month, Locale locale) throws ExpressionException { int m=(int)month; if(m>=1 && m<=12) { return new DateFormatSymbols(locale).getMonths()[m-1]; } throw new ExpressionException("invalid month definition in function monthAsString, must be between 1 and 12 now ["+month+"]"); } }