Android - DateFormatメモ

More than 3 years have passed since last update.


経緯


  • よく使用するが、ややこしいのでメモ


Pattern A


  • 現在のロケールに対応する書式(short)

  • 特記事項 android.text.format.DateFormat.getDateFormat(context)は、 java.text.DateFormatを返す。 (android.text.format.DateFormatではない)

public class Crime {

private Date mDate;
// ...

/**
* @param c context
* @return formatted date string
*/

public String getDateString(Context c) {
java.text.DateFormat df = android.text.format.DateFormat.getDateFormat(c);
return df.format(mDate);
}
// ...
}


  • E.g. あるfragmentから呼ばれた例

    mDateButton.setText(mCrime.getDateString(getActivity()));


Pattern B


  • 現在のロケールに対応する書式(long)

  • 特記事項 Pattern Aと同じ

public class Crime {

private Date mDate;
// ...

/**
* @param c context
* @return formatted date string
*/

public String getDateString(Context c) {
java.text.DateFormat df = android.text.format.DateFormat.getLongDateFormat(c);
return df.format(mDate);
}
// ...
}


  • E.g. あるfragmentから呼ばれた例

    mDateButton.setText(mCrime.getDateString(getActivity()));


Pattern C


  • 書式を指定する

  • どうしても特定の書式でなければならない場合を除き、このパターンは避けるべき

  • 特記事項 android.text.format.DateFormat.format(CharSequence inFormat, Date inDate)は、CharSequenceを返す 。 (Stringではない)


  • 書式の指定方法


public class Crime {

private Date mDate;
// ...

/**
* @return formatted date string
*/

public String getDateString() {
return ((String)DateFormat.format("EEE, MMM d, ''yy", mDate)).toString();
}
// ...
}


  • E.g. あるfragmentから呼ばれた例

    mDateButton.setText(mCrime.getDateString());


参考資料