【问题标题】:Converting String into ISODate in MongoDB using java [duplicate]使用java将字符串转换为MongoDB中的ISODate [重复]
【发布时间】:2016-10-25 13:59:53
【问题描述】:

最近,我已将带有日期字段的 CSV 文件导入 MongoDB。 问题在于日期字段,我尝试将日期字段从字符串更改为 ISO 格式。 目前,它显示“2016-07-31T04:18:17.000Z”。我不知道如何使用 java 将其更改为 ISO 格式。 这个方法我试过了

        String date1 = dr1.getString("created_at");
        DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy"); 

        Date Created_at =  df.parse(date1);
        dr1.append("created_at", Created_at);
        Brand_Mention(dr1,collection1,new ObjectId(dr1.get("_id").toString()));

谁能帮我解决这个问题!!!

【问题讨论】:

  • "2016-07-31T04:18:17.000Z" ISO 格式...(或 ISO-8601 格式,无论如何)。您问题的第二部分应拆分为一个单独的问题,因为它与格式方面完全分开。
  • @JonSkeet 但我在 mongodb 中以这种格式查询失败
  • 这并没有让问题更清楚......而且您仍然没有删除“拆分时间”部分,这确实不应该存在。
  • 如果您能举一个您尝试格式化为的 exact ISO 格式的示例,将会有所帮助。

标签: java date mongodb-query isodate


【解决方案1】:

查看java.time.Instant (javadoc) 类。

它有方法parse() 来解析你的字符串。 然后您可以使用LocalTime.from() 将即时时间点转换为本地时间(即没有日期或时区的小时和分钟和秒)。

然后您可以比较当地时间以找到所需的时间范围。

【讨论】:

  • 这个方法我试过了""
  • String date1 = dr1.getString("created_at"); DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");创建日期_at = df.parse(date1); dr1.append("created_at", Created_at); Brand_Mention(dr1,collection1,new ObjectId(dr1.get("_id").toString()));
  • 但是你看到你的字符串“2016-07-31T04:18:17.000Z”是ISO格式,而不是“EEE MMM dd HH:mm:ss Z yyyy”。所以不需要 SimpleDateFormat,只使用 Instant.parse(dr1.getString("created_at"))。
  • 另外我应该注意,在 Java 编码约定中,变量和方法以小的首字母和驼峰式命名。 “createdAt”,不是“Created_at”,也是“brandMention”而不是“Brand_Mention”。
  • 谢谢!!!我使用 Javascript 解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-08
  • 2019-09-15
  • 2017-09-04
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多