DateTimeFormat parsing error:Invalid format: "2018-04-02T21:57:05.091Z" is malformed at "T21:57:05.091Z"'

DateTimeFormat parsing error:Invalid format: "2018-04-02T21:57:05.091Z" is malformed at "T21:57:05.091Z"'

我收到以下错误

Invalid format: "2018-04-02T21:57:05.091Z" is malformed at "T21:57:05.091Z"' org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:945)

当我尝试在弹性搜索上执行 GET 时。 我在为 Elastic 搜索创建索引时用 ("yyyy-MM-dd") 定义了日期格式。 我正在尝试使用

解析 ts
DateTime.parse(source.get("ts").get.asInstanceOf[String],
               DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ"))

当示例显示模式 ("yyyy-MM-dd'T'HH:mm:ss.SSZ") 时,"I have defined Date format with ("yyyy-MM-dd")" 是什么意思?

后者对我有用(并由 Alvaro 确认)。前者得到指示的错误。看来 "forPattern" 不是正在使用的模式。

package gist;

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class Main {

    public static void main(String[] args) {

        String testString = "2018-04-02T21:57:05.091Z";

//      Works...
        String format = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";

//      Fails with...
//      Exception in thread "main" java.lang.IllegalArgumentException: Invalid format: "2018-04-02T21:57:05.091Z" is malformed at "T21:57:05.091Z"
//        String format = "yyyy-MM-dd";

        DateTimeFormatter formatter = DateTimeFormat.forPattern(format);
        DateTime dateTime = DateTime.parse(testString, formatter);
        System.out.println(dateTime);

    }
}