我正在使用gson 2.8
进行序列化和反序列化当我提供值OffsetDateTime
时,我的班级中有"orderTime":"2018-05-02T14:23:00Z"
字段我得到的是"2018-05-02T14:23Z"
我期待的地方"2018-05-02T14:23:00Z"
如果我提供"orderTime":"2018-05-02T14:23:01Z"
,我会按预期"2018-05-02T14:23:00Z"
获得。反正有没有解决这个问题?
这是我的订单类
import com.google.gson.annotations.SerializedName;
import java.time.OffsetDateTime;
public class Order {
@SerializedName("orderId")
private String orderId = null;
@SerializedName("orderType")
private String orderType = null;
@SerializedName("orderTime")
private OffsetDateTime orderTime = null;
....
}
答案 0 :(得分:0)
有没有解决这个问题?
没有任何修复。问题是是否存在问题。
2018-05-02T14:23:00Z
和2018-05-02T14:23Z
表示相同的时间点。当秒为0时,它们在格式中是可选的。格式称为ISO 8601.因此您获得了预期的值。
您看到的字符串由OffsetDateTime.toString()
生成。没有办法修改此方法的工作方式(即使是覆盖,因为OffsetDateTime
是最终类)。
但是有一个修复程序可以看到另一个字符串。使用格式化程序:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssXXXXX");
System.out.println(orderTime.format(formatter));
打印:
2018-05-02T14:23:00Z