2

私はDateTimePicker日付と時刻の選択に使用しており、[ OK ] ボタンを押すと、getDateTime() を使用して日付時刻を取得し、それを Calender object( selectedDate) に割り当てます。時刻を形式で表示したい ( fri apr 27 06:00:00 am )。

そのため、以下のコードを使用してフォーマットしています。

selectedDate = datePicker.getDateTime();

SimpleDateFormat sdf = new SimpleDateFormat("EEE   MMM  dd hh:mm:ss aa");
timeField.setText(sdf.formatLocal(selectedDate.get(Calendar.MILLISECOND)));

解析エラーなのか間違った時間を返すのかわかりませんがDateTimePicker、任意の日時選択で表示されるテキストは

1 月 1 日木曜日 05:00:00 AM。

ほとんどのデバイスを対象にする必要があるため、私のアプリは OS5 を対象とし、シミュレータ 9550 でテストしています。

4

2 に答える 2

4

問題は、日付全体ではなく、現在の日付のフィールドの値のみを取得していることです。MILLISECONDおそらくミリ秒の精度が必要ですが、このコード

selectedDate.get(Calendar.MILLISECOND)

現在の日付/時刻からミリ秒フィールドを抽出するだけです。これは、前の秒からのミリ秒数にすぎません。方法に似ている

selectedDate.get(Calendar.MONTH);

今日は単に 4 を返します (または 3 を返すかもしれません。0 ベースかどうかは覚えていません)。

使用する必要があります

timeField.setText(sdf.formatLocal(selectedDate.getTime().getTime()));
于 2013-04-27T21:22:01.970 に答える
0

あなたの質問を理解するのは難しいです。なぜなら、あなたが予期しないことが起こることや、あなたが受け取るエラーメッセージを私たちに教えていないからです。さらに、SimpleDateFormat のメソッドとして formatLocal() がどこにも見つかりません。

日付のミリ秒単位の部分を渡しているように見えます。日付をミリ秒で表す場合、そのためのメソッドは Date.getTime() です。

于 2013-04-27T14:38:06.593 に答える