2011-06-30 98 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

相關問題