001    /**
002     * Implements the CFML Function gethttptimestring
003     */
004    package railo.runtime.functions.dateTime;
005    
006    import java.text.SimpleDateFormat;
007    import java.util.Date;
008    import java.util.Locale;
009    import java.util.TimeZone;
010    
011    import railo.commons.lang.StringUtil;
012    import railo.runtime.PageContext;
013    import railo.runtime.ext.function.Function;
014    import railo.runtime.type.dt.DateTime;
015    import railo.runtime.type.dt.DateTimeImpl;
016    
017    public final class GetHttpTimeString implements Function {
018            
019            private final static SimpleDateFormat HTTP_TIME_STRING_FORMAT;
020            static {
021                    HTTP_TIME_STRING_FORMAT = new SimpleDateFormat("EE, dd MMM yyyy HH:mm:ss zz",Locale.ENGLISH);
022                    HTTP_TIME_STRING_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT"));
023            }
024            
025            
026            private static String toHTTPTimeString(Date date) {
027                    synchronized(HTTP_TIME_STRING_FORMAT){
028                            return StringUtil.replace(HTTP_TIME_STRING_FORMAT.format(date),"+00:00","",true);
029                    }
030            }
031            
032            
033            public static String call(PageContext pc) {
034                    return toHTTPTimeString(new DateTimeImpl(pc));
035            }
036    
037            public static String call(PageContext pc , DateTime datetime) {
038            return toHTTPTimeString(datetime==null?new DateTimeImpl(pc):datetime);
039        }
040            
041            public static String invoke(DateTime datetime) {
042            return toHTTPTimeString(datetime);
043            }
044            
045            public static String invoke() {
046            return call(null);
047            }
048    }