如何在“日历”中将时间设置为 24 小时格式

2022-09-01 04:44:18

我需要设置当前日期的时间。时间字符串始终采用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);

这给了我同样的结果。为什么?


答案 1

替换此:

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

有了这个:

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

日历.小时严格表示 12 小时。


答案 2

改用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);

推荐