ISO 8601 DateFormat 1.0.0 (Java 向けライブラリ) をリリースしました
2016 年 5 月 3 日に ISO 8601 DateFormat の 1.0.0 をリリースしました。 ISO 8601 形式 (もしくは RFC 3339 や W3C-DTF 形式) の日付時刻文字列のパースとフォーマットのための DateFormat
のサブクラスを提供するライブラリです。
Bintray の JCenter リポジトリで公開しています。
現在は、時刻オフセット付きの拡張形式の日付時刻文字列のみをサポートしています。
- 2016-01-01T00:30:21Z
- 2016-01-01T09:30:21+09:00
動機
Java では、ISO 8601 形式の日付時刻文字列をパースする方法がいろいろあります。 例えば、SimpleDateFormat
で “yyyy-MM-dd'T'HH:mm:ssX
” というフォーマットを使う (Java SE 7 以降) とか、Date and Time API (JSR 310; Java SE 8 以降) を使うとか、Joda-Time ライブラリを使うとか、Apache Commons Lang ライブラリを使うなどです。
しかし、Java SE 6 環境や Android プラットフォームでは、大きなライブラリを導入することなく ISO 8601 形式の文字列をパースすることが簡単ではありませんでした。 そのため、このようなライブラリを公開しました。
使い方
Gradle を使っている場合、以下のようにリポジトリと依存を追加します。
repositories {
jcenter()
}
dependencies {
compile 'info.vividcode:date-format-iso8601:1.0.0'
}
あとは、以下のように使うだけです。
import info.vividcode.time.iso8601.Iso8601ExtendedOffsetDateTimeFormat; DateFormat f = new Iso8601ExtendedOffsetDateTimeFormat(); Date d1 = f.parse("1970-01-01T00:00:00Z"); Date d2 = f.parse("1970-01-01T09:00:00+09:00");
最新の情報はリポジトリの README ファイルを見てください。
ISO 8601 関連の情報
小さなライブラリが欲しいのでなければ、Joda-Time や Apache Commons Lang、JSR 310 のバックポートライブラリなどを使うのが良いかもしれません。
- Android プラットフォームと Java SE 環境における
SimpleDateFormat
のパターンの違い : Android と Java では SimpleDateFormat の書き方がこう違う - Qiita- Android プラットフォームでは
Z
で 「±HH:MM」 が解釈されるけど、「Z」 が解釈されないという……。
- Android プラットフォームでは
- ThreeTen ABP を使う方法 : AndroidでJSR310 - Qiita
- Apache Commons Lang を使う方法
- 色々な情報 : JavaでのISO 8601形式の日時の処理 - drambuieの日記