5

それらについて読んだことから、androidクラスは便宜のためだけに作られたユーティリティクラスであり、提供しないものは何も提供してSimpleDateFormatいないことがわかります。アンドロイドクラスに何か意味はありますか?それを使用する方が良い習慣ですか(はいの場合、その理由)?私の目標は、AndroidアプリでDateオブジェクトを表示することです(明らかに)。ここにあります:

private Date date;

public String getDateString(String formatStr){
    return new SimpleDateFormat(formatStr).format(date);
}

次のようにandroid.text.format.DateFormatを使用する方がよいでしょうか。

public String getDateString(String formatStr){
    return android.text.format.DateFormat.format(formatStr, date);
}

または、おそらく2つのうちのどれでもないが、別の方法が最善でしょうか?前もって感謝します。

4

2 に答える 2

4

https://stackoverflow.com/a/27116266/642160から私の答えをコピーします:

私が知る限り、android.text.format.DateFormatの機能のjava.text.DateFormat一部、からの機能のjava.text.SimpleDateFormat一部、および独自の追加機能の一部があります。

最も注目すべき点:

  • java SimpleDateFormatを使用すると、ローカライズされていない任意のフォーマットを作成できます。
  • java DateFormatを使用すると、ファクトリメソッドを使用して、日付と時刻ごとに3つのローカライズされた形式を作成できます。
  • android DateFormatは、上記のほとんど(任意の形式と少数のローカライズされた形式)を許可しますgetBestDateTimePatternが、ロケールに適した順序と句読点で指定された要素を含む、ロケールに適した形式の文字列を選択するものも提供します。

したがって、JavaのDateFormatクラスによって提供される3つ以外のローカライズされた日付/時刻形式が必要な場合は、androidのDateFormatクラスが解決策です。

それほど重要ではありませんが、さらに便利です。androidのDateFormatメソッドは、Dateオブジェクトを必要とせずに、Calendarまたはlongミリ秒を直接取ることができます。私はいつもカレンダーで作業するか、日付よりずっと長く作業することを好みます。また、Calendarオブジェクトのタイムゾーンを適切に尊重しますが、カレンダーから日付を取得してフォーマッターに渡すと、タイムゾーン情報が失われます。(Java DateFormatのsetCalendarメソッドを介して回避できないものはありませんが、回避する必要がないのは素晴らしいことです。)

最後に、そして最も重要でないこととして、Android DateFormatの一部のメソッドは実際にはフォーマッターを構築せず、フォーマット文字列を構築するだけです。このクラスのメソッドはすべて静的です。DateFormatを構築するメソッドは、実際にjavaDateFormatを構築します。

于 2014-11-24T23:48:06.747 に答える
1

私は答えがここにあると信じています:

このクラスのファクトリメソッドは、日付のフォーマットと解析の両方に適した、適切にローカライズされたDateFormatインスタンスを返します。

SimpleDateFormatが適切にローカライズされたフォーマットを提供するとは思いません。

于 2013-01-16T22:33:01.377 に答える