在java中将时间从12小时转换为24小时

时间:2011-06-30 07:54:45

标签: java time

在我的应用程序中,我需要将12小时的时间格式化为24小时。我必须使用哪种方法?

例如,时间如上午10:30。如何在java中转换为24小时?

14 个答案:

答案 0 :(得分:63)

试试这个:

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

答案 1 :(得分:13)

java.time

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

在格式化模式中,小写 <script type="text/javascript"> $(document).ready(function redirect(){ $("#login").click(function(){ var pwd="<?php echo $pwd?>"; alert("<?php echo "this is pass".$pword?>"); if(userID===user && pwd===pass) { $('#myForm').submit(); } else { alert("Please enter correct username and password!"); } } }); 表示12小时制,而大写hh表示24小时制。

代码示例:

HH

请参阅此code run live at IdeOne.com.

  

15:30

请参阅Oracle Tutorial

答案 2 :(得分:8)

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

E.g

HH:mm:ss

而不是

hh:mm:ss

答案 3 :(得分:2)

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

由Bart Kiers提供的答案应该替换为

之类的内容
SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a",Locale.UK);

答案 4 :(得分: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;
}

答案 5 :(得分: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;
      }

答案 6 :(得分:0)

在Java 8中使用LocalTime,LocalTime有许多有用的方法,如getHour()getMinute()方法,

例如,

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

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

答案 7 :(得分:0)

尝试此操作以计算两次之间的时间差。

首先它将12小时转换为24小时,然后需要两次之间的差异

String a = "09/06/18 01:55:33 AM";
            String b = "07/06/18 05:45:33 PM";
            String [] b2 = b.split(" ");
            String [] a2 = a.split(" ");
            SimpleDateFormat displayFormat = new SimpleDateFormat("HH:mm:ss");
            SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm:ss a");
            String time1 = null ;
            String time2 = null ;
            if ( a.contains("PM") && b.contains("AM")) {

                 Date date = parseFormat.parse(a2[1]+" PM");
                 time1 = displayFormat.format(date);
                 time2 = b2[1];
            }else if (b.contains("PM") && a.contains("AM")) {
                Date date = parseFormat.parse(a2[1]+" PM");
                time1 = a2[1];
                time2 = displayFormat.format(date);
            }else if (a.contains("PM") && b.contains("PM")){
                Date datea = parseFormat.parse(a2[1]+" PM");
                Date dateb = parseFormat.parse(b2[1]+" PM");
                time1 = displayFormat.format(datea);
                time2 = displayFormat.format(dateb);
            }   
            System.out.println(time1);
            System.out.println(time2);      
            SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
            Date date1 = format.parse(time1);
            Date date2 = format.parse(time2);
            long difference = date2.getTime() - date1.getTime(); 
            System.out.println(difference);
            System.out.println("Duration: "+DurationFormatUtils.formatDuration(difference, "HH:mm"));

有关更多详细信息,Click Here

答案 8 :(得分:0)

这是我完成的代码的摘录。

    String s="08:10:45";
    String[] s1=s.split(":");
    int milipmHrs=0;
    char[] arr=s1[2].toCharArray();
    boolean isFound=s1[2].contains("PM");
    if(isFound){
        int pmHrs=Integer.parseInt(s1[0]);
        milipmHrs=pmHrs+12;
        return(milipmHrs+":"+s1[1]+":"+arr[0]+arr[1]);
    }
    else{

        return(s1[0]+":"+s1[1]+":"+arr[0]+arr[1]);
    }

答案 9 :(得分:0)

import cv2
import os


def play_video(folder):
    # load video capture from file
    video = cv2.VideoCapture(os.path.join(folder, "Field.mp4"))
    # window name and size
    cv2.namedWindow("video", cv2.WINDOW_AUTOSIZE)
    while video.isOpened():
        # Read video capture
        ret, frame = video.read()
        # Display each frame
        cv2.imshow("video", frame)
        # show one frame at a time
        cv2.waitKey(00) == ord('k')
        # Quit when 'q' is pressed
        if cv2.waitKey(1) == ord('q'):
            break
    # Release capture object
    video.release()
    # Exit and distroy all windows
    cv2.destroyAllWindows()


play_video("bb-eye-s001")

答案 10 :(得分:0)

   static String timeConversion(String s)
   {
    String s1[]=s.split(":");
    char c[]=s1[2].toCharArray();
    if(s1[2].contains("PM"))
    {
        int n=Integer.parseInt(s1[0]);
        n=n+12;
        return n+":"+s1[1]+":"+c[0]+c[1];
    }
    else``
    return s1[0]+":"+s1[1]+":"+c[0]+c[1];
     }

答案 11 :(得分:0)

我们可以通过使用字符串缓冲区来解决这个问题 字符串s;

static String timeConversion(String s) {
   StringBuffer st=new StringBuffer(s);
   for(int i=0;i<=st.length();i++){

       if(st.charAt(0)=='0' && st.charAt(1)=='1' &&st.charAt(8)=='P' ){
        //    if(st.charAt(2)=='1'){
               // st.replace(1,2,"13");
                st.setCharAt(0, '1');
                st.setCharAt(1, '3');
       }else if(st.charAt(0)=='0' && st.charAt(1)=='2' &&st.charAt(8)=='P' ){
        //    if(st.charAt(2)=='1'){
               // st.replace(1,2,"13");
                st.setCharAt(0, '1');
                st.setCharAt(1, '4');
        }else if(st.charAt(0)=='0' && st.charAt(1)=='3' &&st.charAt(8)=='P' ){
        //    if(st.charAt(2)=='1'){
               // st.replace(1,2,"13");
                st.setCharAt(0, '1');
                st.setCharAt(1, '5');
         }else if(st.charAt(0)=='0' && st.charAt(1)=='4' &&st.charAt(8)=='P' ){
        //    if(st.charAt(2)=='1'){
               // st.replace(1,2,"13");
                st.setCharAt(0, '1');
                st.setCharAt(1, '6');
         }else if(st.charAt(0)=='0' && st.charAt(1)=='5' &&st.charAt(8)=='P' ){
        //    if(st.charAt(2)=='1'){
               // st.replace(1,2,"13");
                st.setCharAt(0, '1');
                st.setCharAt(1, '7');
         }else if(st.charAt(0)=='0' && st.charAt(1)=='6' &&st.charAt(8)=='P' ){
        //    if(st.charAt(2)=='1'){
               // st.replace(1,2,"13");
                st.setCharAt(0, '1');
                st.setCharAt(1, '8');
         }else if(st.charAt(0)=='0' && st.charAt(1)=='7' &&st.charAt(8)=='P' ){
        //    if(st.charAt(2)=='1'){
               // st.replace(1,2,"13");
                st.setCharAt(0, '1');
                st.setCharAt(1, '9');
         }else if(st.charAt(0)=='0' && st.charAt(1)=='8' &&st.charAt(8)=='P' ){
        //    if(st.charAt(2)=='1'){
               // st.replace(1,2,"13");
                st.setCharAt(0, '2');
                st.setCharAt(1, '0');
         }else if(st.charAt(0)=='0' && st.charAt(1)=='9' &&st.charAt(8)=='P' ){
        //    if(st.charAt(2)=='1'){
               // st.replace(1,2,"13");
                st.setCharAt(0, '2');
                st.setCharAt(1, '1');
         }else if(st.charAt(0)=='1' && st.charAt(1)=='0' &&st.charAt(8)=='P' ){
        //    if(st.charAt(2)=='1'){
               // st.replace(1,2,"13");
                st.setCharAt(0, '2');
                st.setCharAt(1, '2');
         }else if(st.charAt(0)=='1' && st.charAt(1)=='1' &&st.charAt(8)=='P' ){
        //    if(st.charAt(2)=='1'){
               // st.replace(1,2,"13");
                st.setCharAt(0, '2');
                st.setCharAt(1, '3');
         }else if(st.charAt(0)=='1' && st.charAt(1)=='2' &&st.charAt(8)=='A'  ){
        //    if(st.charAt(2)=='1'){
               // st.replace(1,2,"13");
                st.setCharAt(0, '0');
                st.setCharAt(1, '0');
         }else if(st.charAt(0)=='1' && st.charAt(1)=='2' &&st.charAt(8)=='P'  ){
                st.setCharAt(0, '1');
                st.setCharAt(1, '2');
         }
         if(st.charAt(8)=='P'){
             st.setCharAt(8,' ');

         }else if(st.charAt(8)== 'A'){
             st.setCharAt(8,' ');
         }
         if(st.charAt(9)=='M'){
             st.setCharAt(9,' ');
         }
   }
   String result=st.toString();
   return result;
}

答案 12 :(得分:0)

12到24小时的时间转换,如果在输出和输入SimpleDateFormat类参数中更改时间格式,则可以反转该时间

测试数据输入:

字符串输入=“ 07:05:45 PM”;         timeCoversion12to24(input);

输出

19:05:45

 public static String timeCoversion12to24(String twelveHoursTime) throws ParseException {

        //Date/time pattern of input date (12 Hours format - hh used for 12 hours)
        DateFormat df = new SimpleDateFormat("hh:mm:ssaa");

        //Date/time pattern of desired output date (24 Hours format HH - Used for 24 hours)
        DateFormat outputformat = new SimpleDateFormat("HH:mm:ss");
        Date date = null;
        String output = null;

        //Returns Date object
        date = df.parse(twelveHoursTime);

        //old date format to new date format
        output = outputformat.format(date);
        System.out.println(output);

        return output;
    }

答案 13 :(得分:-1)

 static String timeConversion(String s) 
{
    int sec_one = Integer.parseInt(s.substring(0,2));

    if(sec_one <=11 && s.endsWith("AM"))
        return s.substring(0,8);

    else if(sec_one ==12 && s.endsWith("AM"))
        return "00"+s.substring(2,8);

    else if(sec_one<=11 &&s.endsWith("PM")){
        sec_one+=12;
        return sec_one+s.substring(2,8);
    }

     return sec_one+s.substring(2,8);
}

这是HH:MM:SS格式的直接解决方案