ISO-8601
ISO-8601 とは日付と時刻の国際規格であり、
例えば "2010-02-27T13:00:00+09:00" のようなフォーマットらしいです。
REST で結構使われているみたいです。
http://ja.wikipedia.org/wiki/ISO_8601
ISO-8601 形式の日付文字列を解析する方法は色々ありそうですが、
今回は Apache Common Lang 2.5 を使用してみました。
※ターゲットはAndroid 1.5 (API Level 3) の話です
Apache Common Lang
http://commons.apache.org/lang/
※同ページの Download now! をクリックすると最新版がダウンロードできます
サンプルソースコード
以下は "2010-02-27T13:00:00+09:00" を "2010年2月27日(土)13時00分" に変換するサンプルソースコードです。
※説明のために一部あえてパッケージ名+クラス名で書いています
String srcString = "2010-02-27T13:00:00+09:00"; // 解析対象
FastDateFormat fastDateFormat =
org.apache.commons.lang.time.DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT;
String patterns[] = { fastDateFormat.getPattern() };
try {
Date dstDate = org.apache.commons.lang.time.DateUtils.parseDate(
srcString, patterns);
SimpleDateFormat dstDateFormat = new SimpleDateFormat(
"yyyy年M月d日(EEE)HH時mm分");
String dstString = dstDateFormat.format(dstDate);
Log.v("Result", dstString); // 出力結果"2010年2月27日(土)13時00分"
} catch (ParseException e) {
}
ちなみに "2010-02-27T13:00:00+09:00" でなく "2010-02-27T13:00:00.000+09:00" の場合には、
android.text.format.Time#parse3339() を使用するとできるみたいです。
Twitter のフォロワーの方に教えていただきました。ありがたいことです。
※追記:最新のソースだとミリ秒があっても同APIでいけるかも(index19の処理)
あわせて読みたい






























