Saturday, February 19, 2011

Output RFC 3339 Timestamp in Java

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")
From stackoverflow
  • SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'h:m:ss.SZ");
    

    Is not what exactly you need?

    Cristian : No. If you try to parse the timestamp given above, it will throw ParseException.
    FoxyBOA : It works for "2008-11-13T13:23:30-0800".
  • Check out the JODA time package. They make RFC 3339 date formatting a lot easier.

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

0 comments:

Post a Comment