mongodb - 使用带有 restTemplate 的 Spring-Boot 2.0.1 从 MongoDB ISODate 字段中检索数据
问题描述
我无法从我的 MongoDB 表中的 ISOdate 字段中检索正确的数据。
在我的 MongoDb 集合中,我的字段 dtInicio 具有以下值:
{"dtInicio" : ISODate("2018-07-01T00:00:00.000+0000")}
并在执行 mongoTemplated 查询之后
Query query = new Query();
query.addCriteria(Criteria.where("cp").is(cpValue));
List<Vo> list = mongoTemplate.find(query,Vo.class,COLLECTION);
Vo vo = list.get(0);
Date dt = vo.getDataInicio();
我在 dt 变量中得到了错误的值。
getDataInicio() 返回错误值:“Sat Jun 30 21:00:00 BRT 2018”
但在集合字段 (dtInicio) 中有另一个值:“(ISODate("2018-07-01T00:00:00.000+0000"))”
我的 POJO Vo 被注释为:
@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd")
@JsonProperty("inicio")
@DateTimeFormat(style="yyyy-MM-dd")
@Field("dtInicio")
private Date dataInicio;
为什么我的查询返回错误值?我预计 2018-07-01 00:00:00 而不是 2018-06-30 21:00:00
Tks伙计们...
解决方案
为了解决这个问题,我需要在我的 POJO 字段中包含“locale”和“timezone”:
@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd",
locale = "pt-BR",
timezone = "Brazil/East")
@JsonProperty("inicio")
@Field("dtInicio")
private Date dataInicio;
推荐阅读
- spring - Spring Redis - @RedisHash 动态设置 timeToLive
- r - 估计随着时间推移主题流行度对 STM 的影响
- android - 用整数更改进度条最大值
- javascript - JSP在动态生成的表行中获取输入标签的值
- google-apps-script - 触发器应该每 5 分钟激活一次,但它不会发生
- c++ - 用于分析多个数据结构的 massif-visualizer
- react-native - 如何正确进行注册
- python - 使用自定义损失函数创建 Keras 模型的函数只能工作一次
- javascript - jQuery 淡入淡出效果未按预期工作
- unity3d - 如何从assetbundle 加载和实例化任何游戏对象?