Androidでは、ユーザーが日付フォーマットの指定でき、
プログラム側では、これらのフォーマットを参照して画面に出力する必要がある。
日付表示フォーマット
日付表示フォーマットは、Setting – Date & Time – Select date formatにて設定をする。
指定できるフォーマットは、以下の5種類
- 12-31-2009
- 31-12-2009
- Dec 31,2009
- 31-Dec-2009
- 2009-12-31
ユーザーにより設定された日付フォーマットは、Settings.System.getStringメソッドの引数に、Settings.System.DATE_FORMATを渡すことで取得可能。
注意点
- DATE_FORMATは、nullを返す可能性がある。
サンプルコード
* 日付のフォーマットを返す。
*
* Setting - Date & Time - Select date formatで設定された値を取得する
* @param ctx the application context
* @return
*/
public static final String getDateFormatPattern(Context ctx){
final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
String value = Settings.System.getString(ctx.getContentResolver(), Settings.System.DATE_FORMAT);
if(value == null) return DEFAULT_DATE_FORMAT;
return value;
}
/**
* 日付のSimpleDateFormatを返す。
*
* Setting - Date & Time - Select date formatで設定された値をSimpleDateFormatで返す
* @param ctx the application context
* @return the {@link java.text.DateFormat} object
*/
public static final SimpleDateFormat getDateFormat(Context ctx){
return new SimpleDateFormat(getDateFormatPattern(ctx));
}
/**
* 日付 + 時間 形式でのSimpleDateFormatを返す。
*
* @param ctx the application context
* @return the {@link java.text.DateFormat} object
*/
public static final SimpleDateFormat getDateTimeFormat(Context ctx){
return new SimpleDateFormat(getDateFormatPattern(ctx) + " " + getTimeFormatPattern(ctx));
}
2009年8月30日 at 2:12 PM
どうも。Android1.5から追加されたandroid.text.format.DateFormatを使うと、もう少し幸せになれます。
多分、内部的にやってる事は同じだと思いますけど。
2009年8月30日 at 2:17 PM
ほほぉ、情報ありがとうございます。
ただ、HT-03Aだと変更できないし、2009-08-30 ってフォーマットだし、個人的にはスラッシュが好き…