nanoOfSecond为0时:
LocalDateTime localDateTime = LocalDateTime.of(2018, 8, 31, 15, 26, 37, 0);
JSON.toJSONString(localDateTime);//2018-08-31 15:26:37
localDateTime.toString();//2018-08-31T15:26:37
nanoOfSecond不为0时:
LocalDateTime localDateTime = LocalDateTime.of(2018, 8, 31, 15, 26, 37, 1);
JSON.toJSONString(localDateTime).toString();//2018-08-31T15:26:37.000000001
localDateTime.toString();//2018-08-31T15:26:37.000000001
5条答案
按热度按时间r6hnlfcb1#
有问题么?
htrmnn0y2#
我也没看懂,什么问题。
pbgvytdp3#
有问题,Jdk8DateCodec类中判断了,如果LocalDateTime类型,getNano() == 0的话是使用的 DEFFAULT_DATE_FORMAT 或者配置的format, 否则使用的是LocalDateTime自己的toString()方法。
但是DEFFAULT_DATE_FORMAT 序列化出的日期和时间中间不带“T”。
这带来的后果是,mysql数据库,datetime, datetime(3)类型的字段序列化出的格式不一致, 而IE浏览器的不支持new Date("2017-10-01 12:12:12") 这种格式,IE要求时间字符串中间必须带T
@kimmking@wenshao
r7knjye24#
还有这个问题在 1.2.11版中是不存在,因为Jdk8DateCodec.write 方法对所有类型都是调用 toString() 方法来序列化,但是为什么后续版本对LocalDateTime 类型进行了特殊判断,结果就造成了格式不一致的问题,求解?
kx7yvsdv5#
建议这样写