読者です 読者をやめる 読者になる 読者になる

seratch's weblog in Japanese

About Scala, Java and Ruby programming in Japaense. If you need English information, go to http://blog.seratch.net/

java.util.Date の ISO 8601 準拠な datetime 出力

http://stackoverflow.com/questions/2201925/converting-iso8601-compliant-string-to-java-util-date

何が問題かというと java.util.Date 型のオブジェクトを「yyyy-MM-dd'T'HH:mm:ssZ」で出力したものは「2010-01-01T12:00:00+01:00」ではなく「2010-01-01T12:00:00+0100」になってしまうので困ります、という話で。

Jackson のようにデフォルトは epoch time(ミリ秒)で java.text.DateFormat を渡してカスタマイズ、っていう場合には、これでいくのが一番早いんじゃないかなと思います。

public final class ISO8601DateFormat {
  public static DateFormat getDateFormat() {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
    format.setTimeZone(TimeZone.getTimeZone("UTC"));
    return format;
  }
}