我是 MongoDB 新手,正在从 MSSQL 数据库读取时间戳,例如 2013-02-15 13:02:16.000
或 2013-02-15 13:02:16
code>,如何将它们作为 ISODate 插入 MangoDB 中。
我尝试了以下方法,但不起作用
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"),
最佳答案
请尝试使用以下代码。这应该在 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
关于java - 使用 Java 在 mongodb 中插入 SQL 日期作为 ISODate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37655388/