2011-06-30 14 views
18

W mojej aplikacji mam wymóg formatowania 12 godzin do 24 godzin. Jaką metodę muszę użyć?Konwersja z 12 godzin do 24 godzin w java

Na przykład czas taki jak 10:30. Jak mogę przekonwertować na czas 24 godzin w java?

+2

Czy * masz * czas lub datę? –

+0

@ JonTuck: tylko czas – Swift

Odpowiedz

55

Spróbuj tego:

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

która produkuje:

10:30 PM = 22:30 

Patrz: http://download.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html

4

Zakładając, że używasz SimpleDateFormat niejawnie lub jawnie, musisz użyć H zamiast h w ciągu formatującym.

Np

HH:mm:ss

zamiast

hh:mm:ss

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

dostarczone przez Bart Kiers odpowiedź powinna być zastąpiona somethig jak

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

Try This

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

W języku Java 8 i nowszych wersjach można to zrobić w jednym wierszu, używając klasy java.time.LocalTime. Przykładowy kod:

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

szukałem to samo, ale w liczbie, czyli od całkowitej xx godzinę, xx minut i AM w formacie xx/PM na 24 godzinny godziny xx minut, więc o co mam zrobić:

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

Stosując localtime Java 8 localtime ma wiele użytecznych metod jak getHour() lub metodą getMinute(),

Przykładowo

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

W niektórych przypadkach tylko pierwsza linia może wykonać wymaganą analizę.

+0

Powtórz odpowiedź; zobacz [original Answer by Cloud] (https://stackoverflow.com/a/37388524/642706). A kod, który tu widzimy, zawodzi, po pominięciu SPACE znalezionego w danych Pytanie. –

+0

LocalTime domyślnie podaje format 24-godzinny, więc pierwsza linia sama nadaje wymagany format, nie ma potrzeby ponownego formatowania i nie mam uprawnień do komentowania odpowiedzi Cloud – venkata

Powiązane problemy