001/**
002 *
003 * Copyright (c) 2014, the Railo Company Ltd. All rights reserved.
004 *
005 * This library is free software; you can redistribute it and/or
006 * modify it under the terms of the GNU Lesser General Public
007 * License as published by the Free Software Foundation; either 
008 * version 2.1 of the License, or (at your option) any later version.
009 * 
010 * This library is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013 * Lesser General Public License for more details.
014 * 
015 * You should have received a copy of the GNU Lesser General Public 
016 * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
017 * 
018 **/
019package lucee.runtime.converter;
020
021import java.text.DateFormat;
022import java.text.SimpleDateFormat;
023import java.util.Date;
024import java.util.Locale;
025import java.util.TimeZone;
026
027import lucee.runtime.engine.ThreadLocalPageContext;
028
029import org.apache.commons.collections.map.ReferenceMap;
030
031public class JSONDateFormat {
032
033        private static ReferenceMap map=new ReferenceMap();
034        //private static DateFormat format=null;
035        private static Locale locale=Locale.ENGLISH;
036        
037        public synchronized static  String format(Date date, TimeZone tz) {
038                tz=ThreadLocalPageContext.getTimeZone(tz);
039                String id=locale.hashCode()+"-"+tz.getID();
040                DateFormat format = (DateFormat) map.get(id);
041                if(format==null){
042                        format=new SimpleDateFormat("MMMM, dd yyyy HH:mm:ss Z",locale);
043                        format.setTimeZone(tz);
044                        map.put(id, format);
045                }
046                
047                return format.format(date);
048        }
049}