Как установить 24-часовой формат даты на java? - программирование
Подтвердить что ты не робот

Как установить 24-часовой формат даты на java?

Я разрабатываю приложение для Android, где я использую этот код:

Date d=new Date(new Date().getTime()+28800000);
String s=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss").format(d);

Мне нужно получить дату через 8 часов с текущего момента, и я хочу, чтобы эта дата имела 24-часовой формат, но я не знаю, как я могу это сделать с помощью SimpleDateFormat. Мне также нужна эта дата с форматом DD/MM/YYYY HH:MM:SS.

4b9b3361

Ответ 1

Это даст вам дату в формате 24 часа.

    Date date = new Date();
    date.setHours(date.getHours() + 8);
    System.out.println(date);
    SimpleDateFormat simpDate;
    simpDate = new SimpleDateFormat("kk:mm:ss");
    System.out.println(simpDate.format(date));

Ответ 2

для 12-часового формата:

SimpleDateFormat simpleDateFormatArrivals = new SimpleDateFormat("hh:mm", Locale.UK);

для 24-часового формата:

SimpleDateFormat simpleDateFormatArrivals = new SimpleDateFormat("hh:mm", Locale.UK);

Ответ 3

Date d=new Date(new Date().getTime()+28800000);
String s=new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(d);

HH вернет 0-23 в течение нескольких часов.

kk вернет 1-24 в течение нескольких часов.

Смотрите здесь: Пользовательские форматы

использовать метод setIs24HourView (Boolean is24HourView), чтобы установить таймер для установки 24-часового представления.

Ответ 4

Попробуйте ввести код

    String dateStr = "Jul 27, 2011 8:35:29 PM";
    DateFormat readFormat = new SimpleDateFormat( "MMM dd, yyyy hh:mm:ss aa");
    DateFormat writeFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
    Date date = null;
    try {
       date = readFormat.parse( dateStr );
    } catch ( ParseException e ) {
        e.printStackTrace();
    }

    String formattedDate = "";
    if( date != null ) {
    formattedDate = writeFormat.format( date );
    }

    System.out.println(formattedDate);

Удачи!!!

Проверьте различные форматы .

Ответ 5

Используйте HH вместо hh в строке форматирования

Ответ 6

TL;DR

Instant.now()
       .truncatedTo( ChronoUnit.SECONDS )
       .plus( 8 , ChronoUnit.HOURS )
       .atZone( ZoneId.of( "America/Montreal" ) )
       .format( DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm:ss" ).withLocale( Locale.US ) )

23/01/2017 15:34:56

java.time

FYI, старый Calendar и Date теперь legacy. Подается классами java.time. Большая часть java.time портирована на Java 6, Java 7 и Android (см. Ниже).

Instant

Захватите текущий момент в UTC с помощью класса Instant.

Instant instantNow = Instant.now();

instant.toString(): 2017-01-23T12: 34: 56.789Z

Если вы хотите только целые секунды, без какой-либо доли секунды, обрезайте.

Instant instant = instantNow.truncatedTo( ChronoUnit.SECONDS );

instant.toString(): 2017-01-23T12: 34: 56Z

Math

Класс Instant может выполнять математику, добавляя количество времени. Укажите количество времени, которое нужно добавить ChronoUnit enum, реализация TemporalUnit.

instant = instant.plus( 8 , ChronoUnit.HOURS );

instant.toString(): 2017-01-23T20: 34: 56Z

ZonedDateTime

Чтобы увидеть тот же самый момент через линзу определенного времени настенных часов, примените ZoneId, чтобы получить ZonedDateTime.

Укажите имя часового пояса в формате continent/region, например America/Montreal, Africa/Casablanca или Pacific/Auckland. Никогда не используйте аббревиатуру 3-4 буквы, например EST или IST, поскольку они не являются настоящими часовыми поясами, а не стандартизированы и даже не уникальны (!).

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );

zdt.toString(): 2017-01-23T15: 34: 56-05: 00 [Америка/Монреаль]

Сгенерировать строку

Вы можете создать строку в нужном формате, указав шаблон форматирования в объекте DateTimeFormatter.

Обратите внимание, что дело имеет значение в письмах вашего шаблона форматирования. Код "Вопросы" имел hh, который находится на 12-часовом времени, а верхний регистр hh - 24-часовое время (0-23) как в java.time.DateTimeFormatter, так и на прежнем уровне java.text.SimpleDateFormat.

Коды форматирования в java.time аналогичны тем, что указаны в устаревшем SimpleDateFormat, но не совсем то же самое. Тщательно изучите классный документ. Здесь hh работает одинаково.

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm:ss" ).withLocale( Locale.US );
String output = zdt.format( f );

23/01/2017 15:34:56

Рабочий пример кода

Смотрите этот пример как живой код в IdeOne.com.


О java.time

Структура java.time встроена в Java 8 и более поздних версий. Эти классы вытесняют неприятные старые legacy классы времени, такие как java.util.Date, Calendar и SimpleDateFormat.

Проект Joda-Time, теперь режим обслуживания, советуем перейти к классам java.time.

Чтобы узнать больше, см. Учебник Oracle. И поиск Qaru для многих примеров и объяснений. Спецификация JSR 310.

Где получить классы java.time?

  • Java SE 8 и SE 9 и позже
    • Встроенный.
    • Часть стандартного Java API с объединенной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и SE 7
    • Большая часть функциональных возможностей java.time обратно переносится на Java 6 и 7 в ThreeTen-Backport.
  • Android

Joda времени

Обновление. Проект Joda-Time теперь находится в обслуживании mode, при этом команда советует перейти на классы java.time.

Joda-Time упрощает эту работу.

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;

DateTime later = DateTime.now().plusHours( 8 );
DateTimeFormatter formatter = DateTimeFormat.forPattern( "dd/MM/yyyy HH:mm:ss" );
String laterAsText = formatter.print( later );

System.out.println( "laterAsText: " + laterAsText );

При запуске...

laterAsText: 19/12/2013 02:50:18

Помните, что этот синтаксис использует часовой пояс по умолчанию. Лучшей практикой является использование явного экземпляра DateTimeZone.

Ответ 7

Вы можете сделать это следующим образом:

Date d=new Date(new Date().getTime()+28800000);
String s=new SimpleDateFormat("dd/MM/yyyy kk:mm:ss").format(d);

here 'kk: mm: ss' - правильный ответ, я запутался с базой данных Oracle, извините.

Ответ 8

Попробуйте это...

Calendar calendar = Calendar.getInstance();
String currentDate24Hrs = (String) DateFormat.format(
            "MM/dd/yyyy kk:mm:ss", calendar.getTime());
Log.i("DEBUG_TAG", "24Hrs format date: " + currentDate24Hrs);