您应该使用LocalDateTime为:
String hours = "05";
String minutes = "45";
String ampm = "PM";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd hh:mm a");
LocalDateTime dateTime = LocalDateTime.parse(String.format("20160101 %s:%s %s", hours, minutes, ampm), formatter);
System.out.println(dateTime);
如果你没有LocalDateTime的是,你可以使用的SimpleDateFormat:
String hours = "05";
String minutes = "45";
String ampm = "PM";
SimpleDateFormat format = new SimpleDateFormat("hh:mm a");
Date dateTime = format.parse(String.format("%s:%s %s", hours, minutes, ampm));
System.out.println(dateTime);
正如你看到的,代码几乎相同的。
如果你想保持当前的日期,切换到日历:
String hours = "05";
String minutes = "45";
String ampm = "PM";
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.HOUR, Integer.parseInt(hours));
calendar.set(Calendar.MINUTE, Integer.parseInt(minutes));
calendar.set(Calendar.AM_PM, "AM".equals(ampm) ? 0 : 1);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm a");
System.out.println(format.format(calendar.getTime()));
使用java的日历类。您可以轻松地添加小时,分钟,秒或使用简单日期格式 –
@HRaval仅供参考,'Calendar'类现在是遗留的,由java.time类代替。 –