Java:如何以ISO 8601 SECOND格式获取当前日期

mar*_*pes 5 java format timezone iso date

我需要在ISO 8601中获取SS毫秒HH:MM时区的当前日期

完成日期加上小时,分钟,秒和小数秒:YYYY-MM-DDThh:mm:ss.sTZD(例如1997-07-16T19:20:30.45 + 01:00)

请参阅:http://www.w3.org/TR/NOTE-datetime

我尝试了不同的方法,但我无法得到正确的毫秒和时区数字:

DateFormat df=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSZZ");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
df.format(new Date());
Run Code Online (Sandbox Code Playgroud)

JAVA结果: 2012-11-24T21:19:27.758 + 0000

Apache结果: 2012-11-24T21:19:27.758 + 00:00(Apache Commons FastDateFormat)

Tom*_*icz 6

实际上JDK中有一个类来处理ISO8601的解析和格式化:

import javax.xml.bind.DatatypeConverter;

DatatypeConverter.printDateTime(new GregorianCalendar())
//2012-11-24T22:42:03.142+01:00
Run Code Online (Sandbox Code Playgroud)