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

And*_*Dev 32 java calendar

我需要在当前日期设置时间.时间字符串总是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());
Run Code Online (Sandbox Code Playgroud)

日期应为今天的日期,时间设置为10:30.相反,c1中的时间最终为22:30.如何强制日历控件识别我的时间是24小时格式?

编辑: 如果我这样做:

Calendar c1 = Calendar.getInstance();
c1.set(Calendar.HOUR, 10);
c1.set(Calendar.MINUTE, 30);
Run Code Online (Sandbox Code Playgroud)

这给了我相同的结果.为什么?

And*_*Dev 180

替换这个:

c1.set(Calendar.HOUR, d1.getHours());
Run Code Online (Sandbox Code Playgroud)

有了这个:

c1.set(Calendar.HOUR_OF_DAY, d1.getHours());
Run Code Online (Sandbox Code Playgroud)

Calendar.HOUR严格限制为12小时.


Ale*_*gak 8

使用 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());
Run Code Online (Sandbox Code Playgroud)

并且输出没问题 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);
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以使用以下命令将日历设置为仅使用 AM 或 PM

日历.设置(日历.AM_PM,int);

0 = 上午

1 = 下午

希望这可以帮助