日付を次のように表示したいだけです。
_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()
関数を使用するような簡単な方法はありませんか?
以下を使用して、必要に応じて日付をフォーマットします。これを参照してください [〜#〜] 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));
ここで、staurdayは%1 $ tA、5月は%1 $ tb、
等々...
Calendar calendar = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("EEEE, MMMM d, yyyy 'at' h:mm a");
System.out.println(format.format(calendar.getTime()));
上記のコードを実行すると、現在の時刻が出力されます(例:Saturday, May 26, 2012 at 11:03 PM
)。
詳細については、 SimpleDateFormat
のAndroidドキュメント を参照してください。
SimpleDateFormat
のフォーマット仕様は、PHPの date
関数のフォーマット仕様と似ています。
echo date("l, M j, Y \a\\t g:i A");
あなたが正しい。 Javaコードと比較して、PHPコードははるかに簡潔です。
これは、実際にはかなり微妙な問題であり、ここで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.DateFormat
を使用する必要があります。Android独自の(紛らわしい名前の)Android.text.format.DateFormat
ではありません。