001    package railo.runtime.converter;
002    
003    import java.text.DateFormat;
004    import java.text.SimpleDateFormat;
005    import java.util.Date;
006    import java.util.Locale;
007    import java.util.TimeZone;
008    
009    import org.apache.commons.collections.map.ReferenceMap;
010    
011    import railo.runtime.engine.ThreadLocalPageContext;
012    
013    public class JSONDateFormat {
014    
015            private static ReferenceMap map=new ReferenceMap();
016            //private static DateFormat format=null;
017            private static Locale locale=Locale.ENGLISH;
018            
019            public synchronized static  String format(Date date, TimeZone tz) {
020                    tz=ThreadLocalPageContext.getTimeZone(tz);
021                    String id=locale.hashCode()+"-"+tz.getID();
022                    DateFormat format = (DateFormat) map.get(id);
023                    if(format==null){
024                            format=new SimpleDateFormat("MMMM, dd yyyy HH:mm:ssZ",locale);
025                            format.setTimeZone(tz);
026                            map.put(id, format);
027                    }
028                    
029                    return format.format(date);
030            }
031    }