voi*_*oid 5 java date mongodb mongo-java-driver
如果我尝试在Document(BSON)中放置一个日期字段并将其写入Mongo,BSON会将其写入UTC.例如,约会
DateTime dateTime = new DateTime("2015-07-01");
Document doc = new Document("date", dateTime.toDate());
Run Code Online (Sandbox Code Playgroud)
将被存储为
"date" : ISODate("2015-06-30T18:30:00Z")
Run Code Online (Sandbox Code Playgroud)
在蒙戈.而且,如果我使用相同的Java驱动程序检索它,我会得到它
Wed Jul 01 00:00:00 IST 2015
Run Code Online (Sandbox Code Playgroud)
大.这个没有解决方案吗?我的意思是,为什么我不能按照自己的意愿存储日期?如果我需要从另一个时区查询数据库怎么办?我会得到不同的结果?日期字段是Mongo的重要组成部分,其中包含丰富的运算符.不过,为什么Mongo不提供这种灵活性?谢谢
IMO,mongo做的一切都是正确的.您使用本地时区实例化日期,然后将其存储在UTC中的mongo中.然后当你要求mongo为你检索它时,它会再次将日期转移到你当地的时区.
如果您不想处理时区转换,只需使用以下标志将本地时区设置为UTC:
-Duser.timezone="UTC"
Run Code Online (Sandbox Code Playgroud)
我通过在代码本身中将时区设置为 UTC 解决了问题。
DateTimeZone zone = DateTimeZone.UTC;
DateTimeZone.setDefault(zone);
Run Code Online (Sandbox Code Playgroud)