Как отформатировать текущую строку в формат даты / времени? - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь преобразовать эту строку в формат даты / времени
Я получаю эту строку из базы данных и просто хочу преобразовать ее в правильную дату и время ...
String str = 2019-02-22T13: 43: 00Z; // input
Я получаю правильную дату из этой строки с помощью этого кода:

 String[] split_date = date_time.split("T",2);
 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
 Date   date1  = format.parse ( split_date[0]);
 date_time = new SimpleDateFormat("dd-MMM-yyyy hh:mm", Locale.ENGLISH).format(date1);  

В приведенном выше коде (date_time = 22-Feb-2019 12:00) идет.
ожидаемый результат: 22-feb-2019 13: 43
Проблема здесь в том, что я не могу получить правильное время из этого формата по умолчанию.

Ответы [ 2 ]

2 голосов
/ 15 марта 2019

Современный подход использует классы java.time .

Instant instant = Instant.parse( "2019-02-22T13:43:00Z" ) ;
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MMM-uuuu HH:mm" ) ;
String output = odt.format( f ) ;

вывод:

22-Feb-2019 13:43

О java.time

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

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

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

Вы можете обмениваться java.time объектами напрямую с вашей базой данных. Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.* классах.

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

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval, YearWeek, YearQuarter и more .

0 голосов
/ 15 марта 2019

Попробуйте следующий код:

String dt = "2019-02-22T13:43:00Z";
SimpleDateFormat mainformat = new SimpleDateFormat("yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'", Locale.getDefault());
mainformat.setTimeZone(TimeZone.getTimeZone("UTC"));

try {
    Date date1 = mainformat.parse(dt);
    String date_time = new SimpleDateFormat("dd-MMM-yyyy HH:mm", Locale.ENGLISH).format(date1);
    Log.e("Date Time", date_time); 
} catch (Exception e) {
    e.printStackTrace();
}

Вывод: 22 февраля 2019 г. 13: 43

...