2011-06-30 102 views
18

在我的应用程序,我有要求格式12小时时间到24小时time.What是我必须使用的方法?转换从12小时的时间到24小时的时间在java

例如,像10:30 AM那样的时间。我怎样才能转换到24小时在Java?

+2

您*只是*有时间还是日期? –

+0

@JonSkeet:只有时间 – Swift

回答

55

尝试这种情况:

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

4

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

E.g

HH:mm:ss

代替

hh:mm:ss

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

由Bart煮布锅答案提供应改为somethig像

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

尝试这个

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; 
} 
9

java.time

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

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

我一直在寻找同样的事情,但在数量上,从整数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; 
     } 
0

在Java中8使用本地时间,本地时间具有像getHour()getMinute()方法许多有用的方法,

例如,

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

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

+0

Duplicate Answer;请参阅[原始答案云](https://stackoverflow.com/a/37388524/642706)。而且这里看到的代码失败了,因为省略了问题数据中的空格。 –

+0

LocalTime默认情况下会提供24小时格式,因此第一行本身会提供所需的格式,无需再次格式化,我无权评论Cloud的答案 – venkata

相关问题