我需要在当前日期设置时间.时间字符串总是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);
这给了我相同的结果.为什么?
And*_*Dev 180
替换这个:
c1.set(Calendar.HOUR, d1.getHours());
有了这个:
c1.set(Calendar.HOUR_OF_DAY, d1.getHours());
Calendar.HOUR严格限制为12小时.
使用   SimpleDateFormat df = new SimpleDateFormat("HH:mm");替代
UPDATE
@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);