Преобразование формата даты с использованием Java - PullRequest
6 голосов
/ 23 сентября 2010

У меня есть значение даты / времени в стандартном формате ISO 8601 , например 2010-07-26T11: 37: 52Z .

Я хочу дату в формате 26 июля 2010 (дд-мон-гггг) . Как мне это сделать?

Ответы [ 3 ]

23 голосов
/ 23 сентября 2010

Создайте два объекта SimpleDateFormat. Сначала вы анализируете () значение в объекте Date, а второй - для возврата объекта Date в строку, например

try {
  DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
  DateFormat df2 = new SimpleDateFormat("dd-MMM-yyyy");
  return df2.format(df1.parse(input));
}
catch (ParseException e) {
  return null;
}

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

3 голосов
/ 23 сентября 2010

Вы пытались использовать класс Java SimpleDateFormat?В комплект входит Android SDK: http://developer.android.com/reference/java/text/SimpleDateFormat.html

1 голос
/ 25 июня 2019

Я даю современный ответ. Никто не должен больше использовать SimpleDateFormat.

java.time

Анализ текста.

    String dateTimeValue = "2010-07-26T11:37:52Z";
    OffsetDateTime dateTime = OffsetDateTime.parse(dateTimeValue);

Генерация текста.

    DateTimeFormatter dateFormatter = 
        DateTimeFormatter.ofPattern(
            "dd-MMM-uuuu", 
            Locale.forLanguageTag("pt-BR")
        );
    String wantedFormattedDate = dateTime.format(dateFormatter);

Выход:

    System.out.println(wantedFormattedDate);

26-июль-2010

Сокращение месяца в выходных данных зависит от предоставленной локали (бразильский португальский в моем примере).

Я использую тот факт, что ваша дата-время имеет формат ISO 8601, формат, который классы java.time анализируют (и также печатают) как их значения по умолчанию, то есть без какого-либо явного форматера.

Избегайте использования класса SimpleDateFormat, используемого в других ответах. Этот класс, как известно, проблематичен и давно устарел.

Обычно вы не хотите преобразовывать дату и время из строки в одном формате в строку в другом формате. В вашей программе сохраните дату и время как объект даты и времени, например, Instant или OffsetDateTime. Только когда вам нужно выдать строку, отформатируйте дату в одну.

Ссылки

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