Подтвердить что ты не робот

Как конвертировать 24-х часовой формат в формат до 12 часов?

В моем приложении я хочу преобразовать данную CDT-форматированную 24-часовую строку в CDT-форматированную 12-часовую строку, как преобразовать заданную строку формата 24 часа в строку формата 12 часов

4b9b3361

Ответ 1

вы можете попробовать использовать объект 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();
}

вот ссылка javadoc для SimpleDateFromat.

Ответ 2

Вот код для преобразования 24-часового времени в 12-часовое с AM и PM. Если вы не хотите использовать 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"));

Ответ 3

В 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. Смотрите Как использовать ThreeTenABP в Android Project.

Ответ 4

Для кого-то с более низкой версией api, хорошо работают с 12:00 или PM и мин. 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 выше

Ответ 5

// 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 с (K: мм) отлично работает, но не будет работать со временем 12:00 или 12:00 PM

Вы можете использовать приведенный выше код для конвертирования 12-часового формата из 24-часового формата вместе с AM/PM... Он работает

Ответ 6

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

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

Вы можете использовать сканер, если вы хотите взять ввод от пользователя. Надеюсь, это просто 12 для времени:)

Ответ 7

Если вам интересно узнать разницу между K, k и H, h:

H Час в день (0-23) Номер 0 1 +

k Час в день (1-24) Номер 24 1 +

K Час в am/pm (0-11) Номер 0 1 +

h Час в am/pm (1-12) Номер 12 1 +

Ответ 8

Следуйте ниже код:

Создайте общий метод и позвоните туда, где вам нужно:

ОБЩИЙ МЕТОД ИЗМЕНЕНИЯ ВРЕМЕНИ:

  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

Здесь я использую простую математику. 12 часов = 1 + текущий час (24 часа) -13. Для AM & PM использует простое условие ifelse, например, если currentHours (24Hours) равно & lt; = 12, затем установить 'AM' или установить 'PM' Здесь AMPM & Время варьируется. CurHour int.

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;