簡體   English   中英

如何將 24 小時格式時間轉換為 12 小時格式?

[英]How to convert 24 hr format time in to 12 hr Format?

在我的應用程序中,我想將給定的 CDT 格式的 24 小時字符串轉換為 CDT 格式的 12 小時字符串,如何將給定的 24 小時格式字符串轉換為 12 小時格式字符串?

這是將 24 小時制時間轉換為上午和下午 12 小時制的代碼。
注意:-如果您不想要 AM/PM,那么只需將hh:mm a替換為hh:mm

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
   public static void main(String [] args) throws Exception {
       try {       
           String _24HourTime = "22:15";
           SimpleDateFormat _24HourSDF = new SimpleDateFormat("HH:mm");
           SimpleDateFormat _12HourSDF = new SimpleDateFormat("hh:mm a");
           Date _24HourDt = _24HourSDF.parse(_24HourTime);
           System.out.println(_24HourDt);
           System.out.println(_12HourSDF.format(_24HourDt));
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
}

//OUTPUT WOULD BE
//Thu Jan 01 22:15:00 IST 1970
//10:15 PM

另一個解決方案:

System.out.println(hr%12 + ":" + min + " " + ((hr>=12) ? "PM" : "AM"));

您可以嘗試使用SimpleDateFormat對象來轉換時間格式。

final String time = "23:15";

try {
    final SimpleDateFormat sdf = new SimpleDateFormat("H:mm");
    final Date dateObj = sdf.parse(time);
    System.out.println(dateObj);
    System.out.println(new SimpleDateFormat("K:mm").format(dateObj));
} catch (final ParseException e) {
    e.printStackTrace();
}

這是 SimpleDateFromat 的 javadoc 鏈接

在 Java 8 中,可以使用java.time.LocalTime類在一行中java.time.LocalTime

代碼示例:

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

對於早期的Android,使用ThreeTen-Backport項目,在ThreeTenABP項目中為Android適配 請參閱如何在 Android 項目中使用 ThreeTenABP

對於 api 版本較低的人,最好在 12:00 AM 或 PM 和 min < 10

  String time =  ((hourOfDay > 12) ? hourOfDay % 12 : hourOfDay) + ":" + (minute < 10 ? ("0" + minute) : minute) + " " + ((hourOfDay >= 12) ? "PM" : "AM")

輸出例如。 0:0 AM 12:00 PM 9:09 AM

感謝上面@Lalit Jawale 的回答

如果您對 K、k 和 H、h 之間的區別感到好奇:

H 小時 (0-23) 數字 0 1+

k 小時 (1-24) 數字 24 1+

K 小時(上午/下午) (0-11) 數字 0 1+

h 上午/下午的小時數 (1-12) 數字 12 1+

// time is your string value i.e., 24 hour time

    try {
    final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
                final Date dateObj = sdf.parse(time);
                time = new SimpleDateFormat("hh:mm aa").format(dateObj);
            } catch (final ParseException e) {
                e.printStackTrace();
            }

SimpleDateFormat with (K:mm) 工作正常,但不能在 12:00 AM 或 12:00 PM 正常工作

您可以使用上面的代碼將 12 小時格式與 AM/PM 一起從 24 小時格式轉換...它有效

您可以以干凈的方式執行此操作:

fun convertTo12Hours(militaryTime: String): String{
        //in => "14:00:00"
        //out => "02:00 PM"
        val inputFormat = SimpleDateFormat("hh:mm:ss", Locale.getDefault())
        val outputFormat = SimpleDateFormat("hh:mm aa", Locale.getDefault())
        val date = inputFormat.parse(militaryTime)
        return outputFormat.format(date)
    }
int n=2;
int result= n-12;

if (result>o) {
    system.out.println(result+"pm");
} else {
    system.out.prinln(result+"am");
} 

如果您想從用戶那里獲取輸入,您可以使用 Scanner 希望這是簡單的 12 時間:)

如果沒有必要,我不喜歡使用像SimpleDateFormat這樣的類。 你只需要檢查三個條件。 以下是一些替代方案:

簡單

if(hour>11) {
    suffix = "PM";
    if(hour>12)
        hour -= 12;
} else {
    suffix = "AM";
    if(hour==0)
        hour = 12;
}

suffix = (hour>11) ? "PM" : "AM";
hour = (hour>12) ? hour-=12 : ((hour==0) ? 12 : hour);

結果

00:00 = 12:00 AM, 01:00 = 01:00 AM, 02:00 = 02:00 AM, 03:00 = 03:00 AM, 04:00 = 04:00 AM, 05:00 = 05:00 AM, 06:00 = 06:00 AM, 07:00 = 07:00 AM, 08:00 = 08:00 AM, 09:00 = 09:00 AM, 10:00 = 10:00 AM, 11:00 = 11:00 AM, 12:00 = 12:00 PM, 13:00 = 01:00 PM, 14:00 = 02:00 PM, 15:00 = 03:00 PM, 16:00 = 04:00 PM, 17:00 = 05:00 PM, 18:00 = 06:00 PM, 19:00 = 07:00 PM, 20:00 = 08:00 PM, 21:00 = 09:00 PM, 22:00 = 10:00 PM, 23:00 = 11:00 PM

按照下面的代碼:

制作通用方法並從您需要的地方調用:

更改時間的常用方法:

  public static String parseTime(String date, String inFormat, String outFormat) {
        try {
            Date date1 = new SimpleDateFormat(inFormat, Locale.getDefault()).parse(date);
            SimpleDateFormat dateFormat = new SimpleDateFormat(outFormat, Locale.getDefault());
            return dateFormat.format(date1);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

恆定方法:

public static final String SERVER_TIME_RESOURCES_FORMAT = "HH:mm:ss";
    public static final String SERVER_TIME_FORMAT = "HH:mm:ss.SSS";

從您需要的地方致電:

CommonMethods.parseTime(//your date, Constants.SERVER_TIME_RESOURCES_FORMAT, Constants.LOCAL_TIME_FORMAT);

在這里,我使用簡單的數學。 12Hours = 1 + currentHours(24Hours)-13。 對於 AM & PM 使用簡單的 ifelse 條件,例如如果 currentHours(24Hours) <= 12 然后設置 'AM' 或設置 'PM' 這里 AMPM & Time 是字符串變量。 CurHour 是整數。

LocalDateTime LDT = LocalDateTime.now();
        CurHour = LDT.getHour();
        if(CurHour <=12) {
            AMPM = "AM";
        }else {
            AMPM = "PM";
        }
        Hours = 1+CurHour-13;
        Time = Hours+":"+LDT.getMinute()+":"+LDT.getSecond()+" "+AMPM;

這是我的解決方案:

/*
* hour in 24Format -> AM/PM Format
*/
public String format(int hour, int minutes ){

   String meridiem = hour > 11 ? "PM" : "AM";

   // trim "0-23 hour" to "0-11 hour", then replace "0" with "12" 
   hour = (hour %= 12) == 0 ? 12 : hour;

   // Apply desired format "HH:MM AM/PM"
   return String.format("%02d:%02d %s", hour, minutes, meridiem );
}
public static void convert24HourTimeInto12Hour() {
try {      
    String[] dateTime = getCurrentDateAndTime("yyyy-MM-dd HH:mm:ss").split(" ");                  
    System.out.println("datePart::: "+dateTime[0]);         
    System.out.println("timePart::: "+dateTime[1]);         

    SimpleDateFormat 24HoursFormat = new SimpleDateFormat
    SimpleDateFormat 12HoursFormat = new SimpleDateFormat
    Date 24Hours = 24HoursFormat.parse(dateTime[1]);      
    System.out.println(24Hours);                  
    System.out.println(12HoursFormat.format(24Hours)); 
    } catch (Exception e) {           
        e.printStackTrace();          
    }         
}                       

要使用 AM 和 PM 將任何日期日期轉換為 12 小時格式,您可以使用

new SimpleDateFormat("dd MMM yyyy KK:mm:ss a").format(date)

這里 KK 表示 00-12,a 表示 AM 和 PM

這是我使用過的,它將上午 00:10 轉換為上午 12:00,其余時間也可以正常工作。

int hourOfDay=Integer.parseInt(form24hrs);//parsing 24 hours format string value of hour to int

int minute=Integer.parseInt(form24min);//parsing 24 hours format string value of minute to int

String time =  ((hourOfDay > 12) ? hourOfDay % 12 : ((hourOfDay==0)?"12":hourOfDay)) + ":" + (minute < 10 ? ("0" + minute) : minute) + " " + ((hourOfDay >= 12) ? "pm" : "am");

Kotlin版@先維的回答

  val hourOfDay = timePicker.hour
  val minute = timePicker.minute
  val finalHour = (if (hourOfDay > 12) hourOfDay % 12 else hourOfDay).toString()
  val finalMinute = if (minute < 10) "0$minute" else minute.toString()
  val finalMeridian = if (hourOfDay > 12) "PM" else "AM"
  val time = "$finalHour:$finalMinute $finalMeridian"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM