2011-06-30 75 views
18

Trong ứng dụng của tôi, tôi có yêu cầu định dạng thời gian 12 giờ đến 24 giờ. Phương pháp tôi phải sử dụng là gì?Chuyển đổi từ 12 giờ đến 24 giờ trong java

Ví dụ: thời gian như 10:30 sáng. Làm thế nào tôi có thể chuyển đổi sang 24 giờ trong java?

+2

Bạn * chỉ * có thời gian, hay là một ngày? –

+0

@JonSkeet: chỉ có thời gian – Swift

Trả lời

55

Hãy thử điều này:

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

trong đó sản xuất:

10:30 PM = 22:30 

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

4

Giả sử bạn sử dụng SimpleDateFormat ngầm hoặc rõ ràng, bạn cần sử dụng H thay vì h trong chuỗi định dạng.

ví dụ

HH:mm:ss

thay vì

hh:mm:ss

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

cung cấp bởi Bart Kiers câu trả lời nên được thay thế bằng somethig như

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

Hãy thử này

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

Trong Java 8 và sau đó nó có thể được thực hiện trong một dòng bằng cách sử dụng lớp java.time.LocalTime. Mã ví dụ:

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

tôi đang tìm kiếm điều tương tự nhưng về số lượng, có nghĩa là từ giờ số nguyên xx, phút xx và AM/PM đến 24 giờ giờ định dạng xx phút xx, vì vậy ở đây những gì tôi đã làm:

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

Sử dụng localtime trong Java 8, localtime có nhiều phương pháp hữu ích như getHour() hoặc getMinute() phương pháp,

Ví dụ,

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

Trong một số trường hợp, dòng đầu tiên một mình có thể thực hiện phân tích cú pháp được yêu cầu

+0

Trả lời trùng lặp; xem [Câu trả lời gốc bởi Cloud] (https://stackoverflow.com/a/37388524/642706). Và mã được thấy ở đây không thành công, đã bỏ qua một không gian được tìm thấy trong dữ liệu của Câu hỏi. –

+0

LocalTime theo mặc định cung cấp định dạng 24 giờ, vì vậy dòng đầu tiên sẽ cung cấp định dạng bắt buộc, không cần định dạng lại và tôi không có quyền nhận xét về câu trả lời của Cloud – venkata

Các vấn đề liên quan