Как преобразовать 24-часовое форматное время в 12-часовой формат? - PullRequest
38 голосов
/ 02 августа 2011

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

Ответы [ 8 ]

59 голосов
/ 24 апреля 2013

Вот код для преобразования 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"));
54 голосов
/ 02 августа 2011

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

10 голосов
/ 23 мая 2016

В 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 голосов
/ 19 января 2018

Для тех, у кого более низкая версия API, хорошо работать с 12:00 AM или PM и выходом min <10 </p>

  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 выше

1 голос
/ 08 января 2018
// 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: mm) работает нормально, но не будет работать должным образом со временем 12:00 или 12:00

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

1 голос
/ 15 августа 2017

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

ч. Час в день (0-23) Число 0 1 +

k час в день (1-24) число 24 1 +

K Час в час / час (0-11) Число 0 1 +

час. Часы в часах / часах (1-12). Номер 12 1 +

.
1 голос
/ 31 мая 2017
int n=2;
int result= n-12;

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

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

0 голосов
/ 09 мая 2018

Следуйте приведенному ниже коду:

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

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

  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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...