如何在没有时间的情况下将 LocalDate 保存到 MongoDB(即使我只保存日期,为啥 mongo 会随时间保存日期)?

Posted

技术标签:

【中文标题】如何在没有时间的情况下将 LocalDate 保存到 MongoDB(即使我只保存日期,为啥 mongo 会随时间保存日期)?【英文标题】:How to save LocalDate to MongoDB without time (why is mongo saving date with time even if i save just the date)?如何在没有时间的情况下将 LocalDate 保存到 MongoDB(即使我只保存日期,为什么 mongo 会随时间保存日期)? 【发布时间】:2020-05-21 22:48:14 【问题描述】:

我正在尝试将 List 保存在 mongo 中(只是 yyyy-MM-dd 格式的没有时间的日期), 在我的 API 完成 datesList 的计算后,我试图将这些日期保存在 MongoDB 中。 保存后,我看到日期以 yyyy-MM-dd hh:mm:ss 格式保存,如下所示。

有人可以告诉我为什么会这样吗? 有没有办法将 LocalDate 保存为 yyyy-MM-dd 格式? 非常感谢。

我将 SpringJPA Mongo 与 springboot 和 Java 一起使用。

【问题讨论】:

【参考方案1】:

这是因为 MongoDB 以 BSON 格式存储数据(请参阅BSON spec)。

BSON 中没有 Date 的数据类型,只有 TimestampUTC Datetime 两者都存储为 64 位整数。 UTC datetime 是自纪元以来的毫秒数,导致时间部分在呈现时全为零。

如果您只想存储日期,则需要使用字符串类型。

如果问题在于数据的显示方式,您只需要一个不同的函数来将从 MongoDB 返回的时间戳转换为您想要使用的显示格式。

【讨论】:

感谢您的回答。我会尝试将其转换为字符串并保存

以上是关于如何在没有时间的情况下将 LocalDate 保存到 MongoDB(即使我只保存日期,为啥 mongo 会随时间保存日期)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 Geofire 的情况下将位置对象保存在 Firebase 中?

如何在没有数据库的情况下将数据保存到数组中

如何在没有 Redux 的情况下将状态保存在本地存储 React 中?

如何在不将 csv 保存到磁盘的情况下将 csv 格式的数据从内存发送到数据库?

如何在不保存 MS 访问查询的情况下将查询数据导出到 txt 文件

如何在不使用画布的情况下将整个 div 数据转换为图像并将其保存到目录中?