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?
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?
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
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
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);
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;
}
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"));
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;
}
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ę.
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. –
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
Czy * masz * czas lub datę? –
@ JonTuck: tylko czas – Swift