使用 google gson 转换Timestamp或Date类型为JSON字符串.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/caodaoxi/article/details/83697548

gson lib 包为1.4版本.

创建类型适配类:

Timestamp类型适配类代码 复制代码
  1. import java.lang.reflect.Type;   
  2. import java.sql.Timestamp;   
  3. import java.text.DateFormat;   
  4. import java.text.ParseException;   
  5. import java.text.SimpleDateFormat;   
  6. import java.util.Date;   
  7.   
  8. import com.google.gson.JsonDeserializationContext;   
  9. import com.google.gson.JsonDeserializer;   
  10. import com.google.gson.JsonElement;   
  11. import com.google.gson.JsonParseException;   
  12. import com.google.gson.JsonPrimitive;   
  13. import com.google.gson.JsonSerializationContext;   
  14. import com.google.gson.JsonSerializer;   
  15.   
  16. public class TimestampTypeAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp>{   
  17.     private final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
  18.     public JsonElement serialize(Timestamp src, Type arg1, JsonSerializationContext arg2) {   
  19.         String dateFormatAsString = format.format(new Date(src.getTime()));   
  20.         return new JsonPrimitive(dateFormatAsString);   
  21.     }   
  22.   
  23.     public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {   
  24.         if (!(json instanceof JsonPrimitive)) {   
  25.             throw new JsonParseException("The date should be a string value");   
  26.         }   
  27.   
  28.         try {   
  29.             Date date = format.parse(json.getAsString());   
  30.             return new Timestamp(date.getTime());   
  31.         } catch (ParseException e) {   
  32.             throw new JsonParseException(e);   
  33.         }   
  34.     }   
  35.   
  36. }  

  类型适配类

   应用类型适配器 写道

Gson gson = new GsonBuilder().registerTypeAdapter(Timestamp.class,new TimestampTypeAdapter()).setDateFormat("yyyy-MM-dd HH:mm:ss").create();
String jsonString = gson.toJson(resourceInfo,ResourceGeoInfo.class);

  
   输出结果

{"positionTime":"2010-01-07 10:57:27"}

 

Date 类型的时间转换第二种方式;

 

Java代码 复制代码
  1. Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();   
  2. String jsonString = gson.toJson(new Date(System.currentTimeMillis()),Date.class);   
  3. System.out.println(jsonString);  
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
String jsonString = gson.toJson(new Date(System.currentTimeMillis()),Date.class);
System.out.println(jsonString);

 

输出结果:

 

"2010-01-07 12:24:34"

 

 

展开阅读全文

String Date TimeStamp 日期格式的转换

11-10

1.1 String -> Daternrn rnJava代码 收藏代码rnrn String dateStr = "2010/05/04 12:34:23"; rn Date date = new Date(); rn //注意format的格式要与日期String的格式相匹配 rn DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); rn try rn date = sdf.parse(dateStr); rn System.out.println(date.toString()); rn catch (Exception e) rn e.printStackTrace(); rn rnrn rnrn rnrn 1.2 Date -> Stringrnrn rnrn 日期向字符串转换,可以设置任意的转换格式formatrnJava代码 收藏代码rnrn String dateStr = ""; rn Date date = new Date(); rn //format的格式可以任意 rn DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); rn DateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH/mm/ss"); rn try rn dateStr = sdf.format(date); rn System.out.println(dateStr); rn dateStr = sdf2.format(date); rn System.out.println(dateStr); rn catch (Exception e) rn e.printStackTrace(); rn rnrn 二、String与Timestamp互转rnrn rnrn rnrn 2.1 String ->Timestamprnrn rnrn rnrn 使用Timestamp的valueOf()方法rnJava代码 收藏代码rnrn Timestamp ts = new Timestamp(System.currentTimeMillis()); rn String tsStr = "2011-05-09 11:49:45"; rn try rn ts = Timestamp.valueOf(tsStr); rn System.out.println(ts); rn catch (Exception e) rn e.printStackTrace(); rn rnrn 注:String的类型必须形如: yyyy-mm-dd hh:mm:ss[.f...] 这样的格式,中括号表示可选,否则报错!!!rnrn 如果String为其他格式,可考虑重新解析下字符串,再重组~~rnrn rnrn 2.2 Timestamp -> Stringrnrn rnrn 使用Timestamp的toString()方法或者借用DateFormatrnrn rnJava代码 收藏代码rnrn Timestamp ts = new Timestamp(System.currentTimeMillis()); rn String tsStr = ""; rn DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); rn try rn //方法一 rn tsStr = sdf.format(ts); rn System.out.println(tsStr); rn //方法二 rn tsStr = ts.toString(); rn System.out.println(tsStr); rn catch (Exception e) rn e.printStackTrace(); rn rnrn 很容易能够看出来,方法一的优势在于可以灵活的设置字符串的形式。rnrn三、Date( java.util.Date )和Timestamp互转rnrn rnrn 声明:查API可知,Date和Timesta是父子类关系rnrn rnrn rnrn 3.1 Timestamp -> Daternrn rnrn rnJava代码 收藏代码rnrn Timestamp ts = new Timestamp(System.currentTimeMillis()); rn Date date = new Date(); rn try rn date = ts; rn System.out.println(date); rn catch (Exception e) rn e.printStackTrace(); rn rnrn 很简单,但是此刻date对象指向的实体却是一个Timestamp,即date拥有Date类的方法,但被覆盖的方法的执行实体在Timestamp中。rnrn rnrn rnrn 3.2 Date -> Timestamprnrn rnrn 父类不能直接向子类转化,可借助中间的String~~~~rnrn 注:使用以下方式更简洁rnrn Timestamp ts = new Timestamp(date.getTime());rnrn 论坛

没有更多推荐了,返回首页