如何将24小时格式时间转换为12小时格式?

ram*_*ram 40 java android

在我的应用程序中,我想将给定的CDT格式化24小时字符串转换为CDT格式的12小时字符串,如何将给定的24小时格式字符串转换为12小时格式字符串?

Lal*_*ale 63

以下是使用AM和PM将24小时制转换为12小时制的代码.如果你不想AM/PM则只需更换hh:mm ahh: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
Run Code Online (Sandbox Code Playgroud)

另一种方案:

System.out.println(hr%12 + ":" + min + " " + ((hr>=12) ? "PM" : "AM"));
Run Code Online (Sandbox Code Playgroud)

  • "其他解决方案"不会在午夜和中午打印"0"吗?你必须有一个特殊的案例. (2认同)

Ana*_*rma 56

您可以尝试使用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();
}
Run Code Online (Sandbox Code Playgroud)

这是SimpleDateFromat 的javadoc 链接.

  • SimpleDateFormat("K:mm a")会给出它的AM/PM :) (13认同)
  • 而不是K:mm,你可以使用hh:mm aa这将直接返回AM/PM的时间 (4认同)
  • 我有一个问题,因为时间在24小时"12:00"转换后显示为"00:00 pm"? (3认同)
  • 疯狂,这被接受,事实是它产生00:00 pm意味着答案是不幸的非常错误.有关正确答案,请参阅/sf/answers/1133303951/. (2认同)

Clo*_*oud 11

在Java 8中,可以使用class在一行中完成java.time.LocalTime.

代码示例:

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

对于早期的Android,请使用适用于ThreeTenABP项目中的Android 的ThreeTen- Backport项目.请参阅如何在Android项目中使用ThreeTenABP.


Xia*_*wei 5

对于api版本较低的用户,请在12:00 AM或PM且min <10以下

  String time =  ((hourOfDay > 12) ? hourOfDay % 12 : hourOfDay) + ":" + (minute < 10 ? ("0" + minute) : minute) + " " + ((hourOfDay >= 12) ? "PM" : "AM")
Run Code Online (Sandbox Code Playgroud)

输出例如 0:0 AM 12:00 PM 9:09 AM

感谢@Lalit Jawale的回答