解析包含日期,时间和偏移量的时间戳

rob*_*del 2 java date iso8601

我正在使用Java 5.

我需要解析ISO 8601格式的日期时间字符串,例如2011-11-30T12:00:00.000+00:00:

String dateString = "2011-11-30T12:00:00.000+00:00";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
Date parsed=null;
try {
    parsed = df.parse(dateString);
}
Run Code Online (Sandbox Code Playgroud)

我也试过这个模式:yyyy-MM-dd'T'HH:mm:ss.SSSz但是得到相同的结果:

java.text.ParseException: Unparseable date: "2011-11-30T12:00:00.000+00:00"
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Rus*_*huk 5

乔达时间

如果您不想手动解析它,则必须使用Joda-Time (Maven)(支持Java 1.5).只需创建一个对象,new DateTime(String)然后就可以Date通过toDate()方法获得.

时区

将要分配的时区传递给生成的日期时间对象.与java.util.Date不同,Joda-Time DateTime对象知道自己分配的时区(DateTimeZone).如果省略,则隐式分配JVM的当前默认时区.

DateTimeZone zone = DateTimeZone.forID( "America/Montreal" ); // Or perhaps DateTimeZone.UTC
DateTime dateTime = new DateTime( "2011-11-30T12:00:00.000+00:00", zone );
Run Code Online (Sandbox Code Playgroud)