使用restTemplate

时间:2018-07-16 19:54:15

标签: mongodb spring-boot

我无法从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伙计们...

2 个答案:

答案 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;