经常遇到使用JSON格式化日期,可能需要转换的格式不同,一般有以下几种情况
1. 毫秒时间
2. 秒时间
3.格式化的时间
使用方式: String com.alibaba.fastjson.JSON.toJSONString(Object object)
1. 默认情况下,日期格式转换为 毫秒时间,如下
public class EnjoyTest {
@Test
public void test() throws Exception {
A object = new A();
object.date = new Date();
System.out.println(JSON.toJSONString(object));
/*
{"date":1599813582838}
*/
}
}
class A {
public Date date;
}
2. 如果需要到秒的格式,在Date类型的数据增加注解 @JSONField(format = "unixtime"),如果format='millis', 格式为毫秒,和默认相同,注解可以加在属性或者getter方法上
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
public class EnjoyTest {
@Test
public void test() throws Exception {
A object = new A();
object.date = new Date();
System.out.println(JSON.toJSONString(object));
/*
{"date":1599813715}
*/
}
}
class A {
@JSONField(format = "unixtime")
public Date date;
}
3. 如果使用格式化之后的日期,可以在调用时传入SerializerFeature.WriteDateUseDateFormat,默认格式是:com.alibaba.fastjson.JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"
public class EnjoyTest {
@Test
public void test() throws Exception {
A object = new A();
object.date = new Date();
System.out.println(JSON.toJSONString(object, SerializerFeature.WriteDateUseDateFormat));
/*
{"date":"2020-09-11 16:55:19"}
*/
}
}
class A {
public Date date;
}
如果自定义格式,有以下几种
a. 修改 com.alibaba.fastjson.JSON.DEFFAULT_DATE_FORMAT = "yyyy/MM/dd HH:mm",这样影响到所有的默认格式化日期转换
public class EnjoyTest {
@Test
public void test() throws Exception {
A object = new A();
object.date = new Date();
JSON.DEFFAULT_DATE_FORMAT = "yyyy/MM/dd HH:mm";
System.out.println(JSON.toJSONString(object, SerializerFeature.WriteDateUseDateFormat));
/*
{"date":"2020/09/11 17:00"}
*/
}
}
b. 在日期自动使用注解@JSONField(format = "yyyy-MM-dd HH:mm"),注解可以加在属性或者getter方法上,该方法对需要不同格式的日期比较有效
public class EnjoyTest {
@Test
public void test() throws Exception {
A object = new A();
object.date = new Date();
System.out.println(JSON.toJSONString(object));
/*
{"date":"2020-09-11 17:03"}
*/
}
}
class A {
@JSONField(format = "yyyy-MM-dd HH:mm")
public Date date;
}
c. 转字符串时传入格式 JSON.toJSONStringWithDateFormat(object, "yyyy-MM-dd HH:mm"),该方式方便修改本次调用的所有日期格式
public class EnjoyTest {
@Test
public void test() throws Exception {
A object = new A();
object.date = new Date();
System.out.println(JSON.toJSONStringWithDateFormat(object, "yyyy-MM-dd HH:mm"));
/*
{"date":"2020-09-11 17:05"}
*/
}
}
如果生成的字符串包含空属性,使用单引号或者其他,可以传入多个SerializerFeature对象
|
maven
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.12</version>
</dependency>