【问题标题】:parse String to 'yyyy-mm-ddThh:mm:ss.SSSZ' ISODate java [duplicate]将字符串解析为'yyyy-mm-ddThh:mm:ss.SSSZ' ISODate java [重复]
【发布时间】:2017-02-17 12:30:50
【问题描述】:

如何使用SimpleDateFormat将String转换为ISODate格式,这意味着我想最终得到java.util.Date格式的Date。

我的字符串看起来像 2017-02-17T09:28:03.000Z,我想将其转换为日期格式。我可以用 Joda 日期格式执行此操作,但由于我使用的是 mongoDB,它不接受 joda 格式。

   String startDateString1 =  "2017-02-17T04:23:17.452Z";      
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
    Date  startDate = df.parse(startDateString1);
    String newDateString = df.format(startDate);

上面的代码不工作。

【问题讨论】:

  • 你的java版本是多少?
  • 您的时区是否始终为Z?如果不是,那还能是什么?
  • Java 8 java.time 非常适合 ISO 日期和时间。在我看来,Instant.parse() 会毫无问题地吃掉你的字符串。如果您的 MongoDB 驱动程序不接受 Instant,则转换为 Date 很容易。
  • 我正在使用 java 7

标签: java mongodb date simpledateformat isodate


【解决方案1】:

您的代码不起作用,因为 Z 是用于解释 RFC-822 时区的保留字符:

RFC 822 时区:对于格式化,使用 RFC 822 4 位时区格式:

 RFC822TimeZone:
         Sign TwoDigitHours Minutes
 TwoDigitHours:
         Digit Digit

从 Java 7 开始,您可以使用 X 来解释 ISO-8601 时区 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html 。以下作品:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");

但是,在我的电脑上,

System.out.println(newDateString);

产生以下输出:

2017-02-17T05:23:17.452+01

或者,如果您确定只有 UTC 日期,您可以用简单的引号转义 Z 字母:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

这是显示的结果:

2017-02-17T04:23:17.452Z

【讨论】:

    【解决方案2】:

    您可以在 Java 8 中执行此操作,如下所示。

    Instant instant = Instant.parse("2017-02-17T09:28:03.000Z");
    Date date = Date.from(instant);
    

    【讨论】:

    • 一个新的 JDBC 驱动程序应该接受一个 Instant 而不将它转换为 Date (不知道是否存在这样的新驱动程序用于 MongoDB,也不知道询问者是否有)。
    • 我已经检查过了。我认为 MongoDB 没有。
    • 我使用的是 JDK 1.7
    【解决方案3】:

    您可以使用javax.xml.bind.DatatypeConverter.parseDateTime("2017-02-17T04:23:17.452Z"),它将返回一个日历对象。您可以在其上调用getTime() 以获取Date 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多