Spring Mongodb 时间戳时区误导

Spring Mongodb Timestamp Timezone Misleading

我正在使用 Spring 数据 MongoDB。当我保存一些记录时 MongoDb 没有正确保存我的时间戳。

这是我在 Spring 中的时间戳字段。

@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private Date timestamp = new Date();

我的MongoDB记录。

{
"_id": ObjectId("5697a672ce2a8e5347d86afd"),
"batteryLevel": 100,
"beaconClass": 3,
"beaconId": "dsadsa",
"timestamp": ISODate("2016-01-14T13:45:22.702Z")
}

当我登录以控制我的时区和日期时,我发现它是正确的。

Eastern European Time
Asia/Istanbul
Thu Jan 14 15:45:22 EET 2016

如何更正时间 MongoDB 时间戳?

MongoDB 默认以 UTC 格式存储时间,并将任何本地时间表示形式转换为这种形式,请参阅 documentation。您必须在应用程序逻辑中计算原始本地时间。

我还在 spring 引导中使用 spring 数据。即使 Mongo 以 UTC 格式存储我当前的时区 (CEST),当我使用 Mongo 存储库的查询检索它时,它也会自动进行转换并检索所需的数据。