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; } } }