Форматирование Joda-Time DateTime в строку - PullRequest
1 голос
/ 17 января 2020

Я застрял с преобразованием формата DateTime в String, я просто не могу понять, как правильно получить только часы, минуты и секунды из этого типа. Когда я пробовал свой путь, я получаю что-то вроде 2020-01-17T20:19:00. Но мне нужно получить только 20:19:00.

import org.joda.time.DateTime; 

public DateTime orderDateFrom;
Log.d(TAG, orderDateFrom.toString());

Ответы [ 4 ]

2 голосов
/ 17 января 2020
This will get time as 23:10:04 format

import java.text.SimpleDateFormat;
import java.util.Date;
import org.joda.time.DateTime;


        public DateTime orderDateFrom;

        Date d = orderDateFrom.toDate();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        String formattedDate = sdf.format(d);
2 голосов
/ 17 января 2020

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

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
Date date = new Date();
System.out.println(formatter.format(date));
0 голосов
/ 18 января 2020

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

  1. Придерживайтесь Joda-Time на данный момент.
  2. Обновление до java .time , современный Java API даты и времени и преемник Joda-Time.

Опция, которую я, безусловно, от всей души отчаиваю, возвращается к Date и SimpleDateFOrmat с Java 1.0 и 1.1. Эти классы плохо разработаны и давно устарели, последние, в частности, печально известны своими хлопотами.

Палка с Joda-Time

Если вы хотите, чтобы время из вашего DateTime было отформатировано в String, например, для вывода пользователю:

    DateTime orderDateFrom = new DateTime(2020, 1, 17, 20, 19, 0, DateTimeZone.forID("Mexico/BajaSur"));

    DateTimeFormatter timeFormatter = DateTimeFormat.forPattern("HH:mm:ss");
    String formattedTime = orderDateFrom.toString(timeFormatter);
    System.out.println("Order time: " + formattedTime);

Выходные данные из этого фрагмента:

Время заказа: 20: 19: 00

Если Вы хотите указать время суток в качестве объекта, который вы можете использовать для дальнейшей обработки:

    LocalTime orderTime = orderDateFrom.toLocalTime();
    System.out.println("Order time: " + orderTime);

Время заказа: 20: 19: 00.000

Мы заметили, что это время три десятичных знака на секунде минуты также печатаются, так как метод no-arg toString делает это. Вы можете отформатировать LocalTime, используя тот же форматер, что и выше, чтобы получить ту же строку, если хотите.

Заметка о java .time о Android

Если программирование для Android API уровня 26 и / или выше, java .time поставляется встроенным. Если вам нужно принять во внимание более низкие уровни API, java .time становится внешней зависимостью, как Joda-Time: ThreeTenABP. Это ThreeTen для JSR-310, где впервые было описано java .time, и ABP для Android Backport. См. Ссылки внизу.

Код будет аналогичным, а не идентичным коду с использованием Joda-Time выше.

Ссылки

0 голосов
/ 17 января 2020

Возможно, есть лучший способ сделать это, но вы можете просто получить подстроку.

String orderDateStr = orderDateFrom.toString();
orderDateStr.substring(orderDateStr.lastIndexOf("T")+1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...