在java中将时间从12小时转换为24小时

在我的应用程序中,我要求将12小时时间格式化为24小时。我必须使用哪种方法?

例如,时间如上午10:30。 如何在java中转换为24小时?

尝试这个:

import java.text.SimpleDateFormat; import java.util.Date; public class Main { public static void main(String [] args) throws Exception { SimpleDateFormat displayFormat = new SimpleDateFormat("HH:mm"); SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a"); Date date = parseFormat.parse("10:30 PM"); System.out.println(parseFormat.format(date) + " = " + displayFormat.format(date)); } } 

产生:

 10:30 PM = 22:30 

请参阅: http : //download.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html

java.time

在Java 8及更高版本中,可以使用类java.time.LocalTime在一行中完成。 代码示例:

 String result = LocalTime.parse(time, DateTimeFormatter.ofPattern("hh:mm a")).format(DateTimeFormatter.ofPattern("HH:mm")); 

假设您隐式或显式地使用SimpleDateFormat ,您需要在格式字符串中使用H而不是h

例如

HH:mm:ss

代替

hh:mm:ss

 SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a"); 

由Bart Kiers提供的答案应该用somethig代替

 SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a",Locale.UK); 

尝试这个

 public static String convertTo24Hour(String Time) { DateFormat f1 = new SimpleDateFormat("hh:mm a"); //11:00 pm Date d = null; try { d = f1.parse(Time); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } DateFormat f2 = new SimpleDateFormat("HH:mm"); String x = f2.format(d); // "23:00" return x; } 

我在寻找相同的东西,但在数量上,意味着从整数xx小时,xx分钟和AM / PM到24小时格式xx小时和xx分钟,所以这里我做了什么:

 private static final int AM = 0; private static final int PM = 1; /** * Based on concept: day start from 00:00AM and ends at 11:59PM, * afternoon 12 is 12PM, 12:xxAM is basically 00:xxAM * @param hour12Format * @param amPm * @return */ private int get24FormatHour(int hour12Format,int amPm){ if(hour12Format==12 && amPm==AM){ hour12Format=0; } if(amPm == PM && hour12Format!=12){ hour12Format+=12; } return hour12Format; }` private int minutesTillMidnight(int hour12Format,int minutes, int amPm){ int hour24Format=get24FormatHour(hour12Format,amPm); System.out.println("24 Format :"+hour24Format+":"+minutes); return (hour24Format*60)+minutes; } 

在Java 8中使用LocalTime,LocalTime有许多有用的方法,如getHour()getMinute()方法,

例如,

 LocalTime intime = LocalTime.parse(inputString, DateTimeFormatter.ofPattern("h:ma")); String outtime = intime.format(DateTimeFormatter.ISO_LOCAL_TIME); 

在某些情况下,仅第一行可以执行所需的解析

试试这个来计算两次之间的时差。

首先它会将12小时的时间转换为24小时,然后两次之间需要差异

 String a = "09/06/18 01:55:33 AM"; String b = "07/06/18 05:45:33 PM"; String [] b2 = b.split(" "); String [] a2 = a.split(" "); SimpleDateFormat displayFormat = new SimpleDateFormat("HH:mm:ss"); SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm:ss a"); String time1 = null ; String time2 = null ; if ( a.contains("PM") && b.contains("AM")) { Date date = parseFormat.parse(a2[1]+" PM"); time1 = displayFormat.format(date); time2 = b2[1]; }else if (b.contains("PM") && a.contains("AM")) { Date date = parseFormat.parse(a2[1]+" PM"); time1 = a2[1]; time2 = displayFormat.format(date); }else if (a.contains("PM") && b.contains("PM")){ Date datea = parseFormat.parse(a2[1]+" PM"); Date dateb = parseFormat.parse(b2[1]+" PM"); time1 = displayFormat.format(datea); time2 = displayFormat.format(dateb); } System.out.println(time1); System.out.println(time2); SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); Date date1 = format.parse(time1); Date date2 = format.parse(time2); long difference = date2.getTime() - date1.getTime(); System.out.println(difference); System.out.println("Duration: "+DurationFormatUtils.formatDuration(difference, "HH:mm")); 

更多详情请点击这里