我是MongoDB的新手,我正在读取MS 2013-02-15 13:02:16.000
或2013-02-15 13:02:16
等MSSQL数据库的时间戳,如何在MangoDB中将它们作为ISODate插入。
我尝试过以下但是不起作用
doc.put(col, new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'", Locale.ENGLISH).parse(value));
我查询集合时得到的结果表示为字符串
"DateCreated" : "2012-09-11 19:06:45.0",
"DateModified" : "2012-09-11 19:06:45.0",
我期待像
这样的东西"DateCreated" : ISODate("2012-09-11T19:06:45.xxZ)",
"DateModified" : ISODate("2012-09-11 19:06:45.0"),
答案 0 :(得分:1)
请尝试使用以下代码。这应该在Mongo DB集合中将日期作为ISODate(“2013-02-15T13:02:16.100Z”)插入。
LocalDateTime ld = LocalDateTime.parse("2013-02-15 13:02:16.100",
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
Date date = Date.from(ld.atZone(ZoneId.systemDefault()).toInstant());
doc.put(col, date);
如果需要考虑ZoneId。请参考以下代码并相应更改区域ID。
Date date = Date.from(ld.atZone(ZoneId.of("UTC")).toInstant());
https://docs.oracle.com/javase/tutorial/datetime/iso/timezones.html
Date date = Date.from(ld.atZone(ZoneId.of("Australia/Darwin")).toInstant());
America/Caracas -04:30
America/St_Johns -02:30
Asia/Calcutta +05:30
Asia/Colombo +05:30
Asia/Kabul +04:30
Asia/Kathmandu +05:45
Asia/Katmandu +05:45
Asia/Kolkata +05:30
Asia/Rangoon +06:30
Asia/Tehran +04:30
Australia/Adelaide +09:30
Australia/Broken_Hill +09:30
Australia/Darwin +09:30
Australia/Eucla +08:45
Australia/LHI +10:30
Australia/Lord_Howe +10:30
Australia/North +09:30
Australia/South +09:30
Australia/Yancowinna +09:30
Canada/Newfoundland -02:30
Indian/Cocos +06:30
Iran +04:30
NZ-CHAT +12:45
Pacific/Chatham +12:45
Pacific/Marquesas -09:30
Pacific/Norfolk +11:30