views:

1983

answers:

3

I want to output a timestamp with a PST offset (e.g., 2008-11-13T13:23:30-08:00). java.util.SimpleDateFormat does not seem to output timezone offsets in the hour:minute format, it excludes the colon. Is there a simple way to get that timestamp in Java?

// I want 2008-11-13T12:23:30-08:00
String timestamp = new SimpleDateFormat("yyyy-MM-dd'T'h:m:ssZ").format(new Date());
System.out.println(timestamp); 
// prints "2008-11-13T12:23:30-0800" See the difference?

Also, SimpleDateFormat cannot properly parse the example above. It throws a ParseException.

// Throws a ParseException
new SimpleDateFormat("yyyy-MM-dd'T'h:m:ssZ").parse("2008-11-13T13:23:30-08:00")
+1  A: 
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'h:m:ss.SZ");

Is not what exactly you need?

FoxyBOA
No. If you try to parse the timestamp given above, it will throw ParseException.
Cristian
It works for "2008-11-13T13:23:30-0800".
FoxyBOA
+1  A: 

Check out the JODA time package. They make RFC 3339 date formatting a lot easier.

Biff
+2  A: 

The problem is that Z produces the time zone offset without a colon (:) as the separator.

Christian K.