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

时间:2011-08-02 06:15:38

标签: java android

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

14 个答案:

答案 0 :(得分:56)

以下是使用AM和PM将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"));

答案 1 :(得分:54)

您可以尝试使用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 link

答案 2 :(得分:9)

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

代码示例:

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

对于早期的Android,请使用适用于ThreeTen-Backport项目中的Android的ThreeTenABP项目。请参阅How to use ThreeTenABP in Android Project

答案 3 :(得分:4)

对于api版本较低的人, 在凌晨12:00或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回答

答案 4 :(得分:1)

int n=2;
int result= n-12;

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

如果您想从用户那里获取输入,您可以使用扫描仪希望这很简单 12时间:)

答案 5 :(得分:1)

如果您对K,K和H之间的差异感到好奇,h:

H小时(0-23)数字0 1 +

k小时(1-24)24号1 +

上午/下午的K小时(0-11)数字0 1 +

h上午/下午(1-12)小时数12 1 +

答案 6 :(得分: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();
            }
带有(K:mm)的SimpleDateFormat工作正常,但在时间12:00 AM或12:00 PM无法正常工作

你可以使用上面的代码将24小时格式的12小时格式与AM / PM一起转换......它有效吗

答案 7 :(得分:1)

如果没有必要,我不喜欢使用像 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

答案 8 :(得分:0)

请按照以下代码:

制定通用方法并从您需要的地方致电:

改变时间的常用方法:

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

答案 9 :(得分:0)

这里我使用简单的数学。 12小时= 1 + currentHours(24小时)-13。 对于AM和PM,请使用简单的ifelse条件,例如,如果currentHours(24Hours)<= 12,则设置“ AM”或“ PM” 这里AMPM&Time是String变量。 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;

答案 10 :(得分:0)

这是我的解决方法:

static void client() throws IOException, ClassNotFoundException {
        Socket client = new Socket("127.0.0.1", 9876);
        oos = new ObjectOutputStream(client.getOutputStream());
        oos.writeObject("Connected");
        connected = true;
        game.add(otherPlayer);
        while (true) {
            ois = new ObjectInputStream(client.getInputStream());
            String message = (String) ois.readObject();
            otherX = Character.digit(message.charAt(0), 10);
            otherX *= 10;
            otherX += Character.digit(message.charAt(1), 10);
            otherX *= 10;
            otherX += Character.digit(message.charAt(2), 10);
            otherY = Character.digit(message.charAt(3), 10);
            otherY *= 10;
            otherY += Character.digit(message.charAt(4), 10);
            otherY *= 10;
            otherY += Character.digit(message.charAt(5), 10);
            otherPlayer.setBounds(otherX, otherY, 50, 50);
            oos.flush();
        }
    }

答案 11 :(得分:0)

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

答案 12 :(得分:0)

要使用AM和PM将任何日期日期转换为12小时格式,可以使用

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

此处KK表示00-12,而AM和PM表示

答案 13 :(得分:0)

这是我使用过的,它将上午 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");