YYYY-MM DDThh:MM:ssTZD的Java SimpleDataFormat

YYYY-MM DDThh:MM:ssTZD的Java SimpleDataFormat,java,date,Java,Date,我们使用的一个外部API需要 “YYYY-MM-DDThh:MM:ssTZD” 要传入的格式 XMLGregorianCalendar 反对。我不确定Java中是否有任何东西支持“T”。我想知道,是否可以用Java将日期解析为上述格式?他们提供的有效日期示例 是 “2009-07-16T19:20:30-05:00” Update: SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZ");

我们使用的一个外部API需要

“YYYY-MM-DDThh:MM:ssTZD”

要传入的格式

XMLGregorianCalendar

反对。我不确定Java中是否有任何东西支持
“T”
。我想知道,是否可以用Java将日期解析为上述格式?他们提供的有效日期示例 是

“2009-07-16T19:20:30-05:00”

 Update:

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZ");        
        GregorianCalendar gc = new GregorianCalendar();
        String dateString = sdf.format(gc.getTime());       
        gc.setTime(sdf.parse(dateString));      
        XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
输出:

2014-04-17T13:11:30.000+01:00

将API与
日期模式一起使用

String date = "2009-07-16T19:20:30-05:00";
String pattern = "yyyy-MM-dd'T'HH:mm:ssZ";
DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern);
DateTime dateTime = dtf.parseDateTime(date);
System.out.println(dateTime); // 2009-07-16T19:20:30-05:00

你需要把它放在单引号里

试一试

试试Java8

如果您使用的是早期的Java版本,也可以使用


示例:
DateTimeFormatter.of模式(“yyyy-MM-dd'T'HH:MM:ssZ”).format(yourLocalDateTime)
是的,您可以。请尝试此日期格式化程序

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

检查我的最新答案嗨,皮特,我试过了,但不知怎的,它附加了“000”。请查看我的更新答案。如果我有这样的模式“yyyy-MM-ddTHH:MM:ssZ”(不带单引号的T),有没有办法解析这个东西到日期对象?@ShamimAhmad,它会抛出异常:
java.lang.IllegalArgumentException:未知模式字符“T”
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");