content: package com.alibaba.json.bvt.serializer.date;
  
  import java.util.Calendar;
  import java.util.Date;
  import java.util.HashMap;
  import java.util.Locale;
  import java.util.Map;
  import java.util.TimeZone;
  
  import junit.framework.TestCase;
  
  import org.junit.Assert;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.TypeReference;
  import com.alibaba.fastjson.serializer.SerializerFeature;
  
  public class DateTest_ISO8601_TimeZone extends TestCase {
      protected void setUp() throws Exception {
          JSON.defaultTimeZone = TimeZone.getTimeZone("Asia/Shanghai");
          JSON.defaultLocale = Locale.CHINA;
      }
      
      
      public void test_date1() throws Exception {
          Map<String,Date> map = new HashMap<String,Date>();
          map.put("date", new Date(1425886057586l));
  
          String json = JSON.toJSONString(map, SerializerFeature.UseISO8601DateFormat);
          
          Assert.assertEquals("{\"date\":\"2015-03-09T15:27:37.586+08:00\"}", json);
  
          Map<String,Date> newMap = JSON.parseObject(json, new TypeReference<Map<String,Date>>(){});
  
          Assert.assertEquals(1425886057586l, newMap.get("date").getTime());
      }
  
      public void test_date2() throws Exception {
          Calendar c = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);
          c.setTimeZone(TimeZone.getTimeZone("GMT+10"));
          VO v = new VO();
          v.setGmtCreate(c);
          String json = JSON.toJSONString(v, SerializerFeature.UseISO8601DateFormat);
          System.out.println(json);
  
          Calendar cal = JSON.parseObject(json, VO.class).getGmtCreate();
  
          Assert.assertEquals(10, cal.getTimeZone().getRawOffset() / (3600 * 1000));
      }
  
      public void test_date3() throws Exception {
          Calendar c = Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale);
          VO v = new VO();
          v.setGmtCreate(c);
          String json = JSON.toJSONString(v, SerializerFeature.UseISO8601DateFormat);
          System.out.println(json);
  
          Calendar cal = JSON.parseObject(json, VO.class).getGmtCreate();
  
          Assert.assertEquals(8, cal.getTimeZone().getRawOffset() / (3600 * 1000));
      }
  
      public static class VO {
  
          private Calendar gmtCreate;
  
          public Calendar getGmtCreate() {
              return gmtCreate;
          }
  
          public void setGmtCreate(Calendar gmtCreate) {
              this.gmtCreate = gmtCreate;
          }
  
      }
  }
  