2010年3月29日月曜日

AndroidアプリでRSSフィードの日付をパースしてフォーマットする

Androidアプリで、RSSフィードの日付をパースして表示するTips。
RSSフィードのpubDateの日付書式「Mon, 29 Mar 2010 04:34:00 +0000」を任意の日付フォーマットへ変換する。
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.http.impl.cookie.DateParseException;
import org.apache.http.impl.cookie.DateUtils;

/** RSSフィードの日付フォーマットパターン */
private String pattern[] = { DateUtils.PATTERN_RFC1123 };

// ItemからpubDateを取得してフォーマット
String pubdate = item.getPubdate().toString();

String formattedPubdate = "";
try {
 Date date = DateUtils.parseDate(pubdate, pattern);
 SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy 'at' HH:mm");
 formattedPubdate = sdf.format(date);
} catch (DateParseException e) {
 e.printStackTrace();
}
フォーマットした文字列はViewに設定するなどして表示する。
// item_pubdateに則ってTextView生成
TextView pubdateView = (TextView) view.findViewById(R.id.item_pubdate);
pubdateView.setText(formattedPubdate);
タイムゾーンの設定により、日付がパースされる結果は動的に変わる。

タイムゾーンをGMT+09:00に設定している場合とGMT+1:00に設定している場合とでは、パース後の日付情報が異なっている。DateUtilsのparseDateメソッド、便利ですねぇ。