我无法从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()返回错误的值: “ 2018年6月30日星期六21:00:00 BRT”
,但在收集字段(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伙计们...
答案 0 :(得分:0)
两者相同...在不同时区。您可以使用正确的时区(BRT)存储日期,也可以将结果格式化为GMT时区。
答案 1 :(得分:0)
要解决此问题,我需要在我的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;