42

日付を次のように表示したいだけです:

Saturday, May 26, 2012 at 10:42 PM

これまでの私のコードは次のとおりです。

Calendar calendar = Calendar.getInstance();
String theDate = calendar.get(Calendar.MONTH) + " " + calendar.get(Calendar.DAY_OF_MONTH) + " " + calendar.get(Calendar.YEAR);

lastclick.setText(getString(R.string.lastclick) + " " + theDate);

これは月、日、年の数字を示していますが、これを行うためのより良い方法が必要ですか? PHPのdate()関数を使用するような簡単な方法はありませんか?

4

6 に答える 6

118
Calendar calendar = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("EEEE, MMMM d, yyyy 'at' h:mm a");
System.out.println(format.format(calendar.getTime()));

Running the above code outputs the current time (e.g., Saturday, May 26, 2012 at 11:03 PM).

See the Android documentation for SimpleDateFormat for more information.

The format specification of SimpleDateFormat is similar to that of PHP's date function:

echo date("l, M j, Y \a\\t g:i A");

You're right. Compared to the Java code, the PHP code is much more succinct.

于 2012-05-27T02:50:41.727 に答える
21

Use the below to format the date as required. Refer this LINK

 Calendar calendar = Calendar.getInstance();
 lastclick.setText(getString(R.string.lastclick) + " " + String.format("%1$tA %1$tb %1$td %1$tY at %1$tI:%1$tM %1$Tp", calendar));

Where %1$tA for staurday, %1$tb for May,

and so on...

于 2012-05-27T02:51:39.110 に答える
15

これは実際にはかなり微妙な問題であり、両方に対処する SO に関する別の回答は見たことがありません。

  • Calendarタイム ゾーン (ローカルとは異なる日付を表示している可能性があることを意味します)
  • デバイスLocale(日付をフォーマットする「正しい」方法に影響します)

この質問に対する以前の回答はロケールを無視し、への変換を伴う他の回答Dateはタイムゾーンを無視します。したがって、より完全で一般的な解決策は次のとおりです。

Calendar cal = Calendar.getInstance(); // the value to be formatted
java.text.DateFormat formatter = java.text.DateFormat.getDateInstance(
        java.text.DateFormat.LONG); // one of SHORT, MEDIUM, LONG, FULL, or DEFAULT
formatter.setTimeZone(cal.getTimeZone());
String formatted = formatter.format(cal.getTime());

java.text.DateFormatAndroid 独自の (紛らわしい名前) ではなく、ここで使用する必要があることに注意してくださいandroid.text.format.DateFormat

于 2016-02-20T19:24:44.820 に答える