36

現在の日付に時刻を設定する必要があります。時刻文字列は常に 24 時間形式ですが、得られる結果は間違っています。

  SimpleDateFormat df = new SimpleDateFormat("kk:mm");
  Date d1 = df.parse("10:30");
  Calendar c1 = Calendar.getInstance();
  c1.set(Calendar.HOUR, d1.getHours());
  c1.set(Calendar.MINUTE, d1.getMinutes());

日付は今日の日付で、時刻は 10:30 に設定する必要があります。代わりに、c1 の時間は 22:30 になります。カレンダー コントロールに自分の時間が 24 時間形式であることを認識させるにはどうすればよいですか?

編集: 私がこれを行うと:

Calendar c1 = Calendar.getInstance();
c1.set(Calendar.HOUR, 10);
c1.set(Calendar.MINUTE, 30);

これは私に同じ結果を与えます。なんで?

4

9 に答える 9

192

これを置き換えます:

c1.set(Calendar.HOUR, d1.getHours());

これとともに:

c1.set(Calendar.HOUR_OF_DAY, d1.getHours());

Calendar.HOUR は厳密に 12 時間です。

于 2013-02-20T14:18:35.370 に答える
10

SimpleDateFormat df = new SimpleDateFormat("HH:mm");代わりに使用

アップデート

@Ingoは正しいです。より良い使い方ですsetTime(d1);

最初の方法getHours()であり、getMinutes()現在は非推奨です

このコードをテストします

SimpleDateFormat df = new SimpleDateFormat("hh:mm");
  Date d1 = df.parse("23:30");
  Calendar c1 = GregorianCalendar.getInstance();
  c1.setTime(d1);
  System.out.println(c1.getTime());

出力は問題ありませんThu Jan 01 23:30:00 FET 1970

これを試して

SimpleDateFormat df = new SimpleDateFormat("KK:mm aa");
  Date d1 = df.parse("10:30 PM");
  Calendar c1 = GregorianCalendar.getInstance(Locale.US);
  SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");  
  c1.setTime(d1);
  String str = sdf.format(c1.getTime());
  System.out.println(str);
于 2013-02-20T13:23:44.317 に答える
6

を使用して、AM または PM のみを使用するようにカレンダーを設定できます。

calendar.set(Calendar.AM_PM, int);

0 = 午前

1 = 午後

お役に立てれば

于 2014-02-11T10:09:16.900 に答える
0

これを試して :

SimpleDateFormat df = new SimpleDateFormat("hh:mm");

または

SimpleDateFormat df = new SimpleDateFormat("KK:mm");

参考:SimpleDateFormat

于 2013-02-20T13:25:39.847 に答える