Конвертация строки с датой

В локальной базе данных приложения android хранится время в таком формате строки: Wed, 12 Feb 2020 8:52:39 GMT. Мне нужно вывести в формате: 12.02.2020 8:52:39, чтобы время/дата зависeли от часового пояса, выставленного в настройках системы. Подскажите как правильно конвертировать, пожалуйста.

После всех проб, ошибок и помощи я всё-же смог сделать конвертацию.

    SimpleDateFormat df = new SimpleDateFormat( "EEE, dd MMM yyyy H:mm:ss zzz", Locale.US);

        try {
            Date date = df.parse("Wed, 12 Feb 2020 12:52:39 GMT");

            SimpleDateFormat dfout = new SimpleDateFormat( "dd.MM.yyyy H:mm:ss");
            String res = dfout.format(date);
            viewHolder.txtDATE.setText(res);
        } catch (ParseException e) {
            e.printStackTrace();
        }

Ответы (2 шт):

Автор решения: Спицко Дмитрий

Момент первый: лучше не хранить дату с использованием текста. Храните в виде "YYYY-MM-DD HH:mm:ss" или вообще unixtime-ом. Это правда удобней, и в базе можно запросы с фильтрацией по дате делать, и парсить проще. Конкретно в вашем случае должно сработать что-то такое:

ZonedDateTime.parse("Wed, 12 Feb 2020 8:52:39 GMT").format(DateTimeFormatter.ofPattern( "d MM YYYY HH:mm:ss"))

Или переведем в Data

SimpleDateFormat df = new SimpleDateFormat( "E, dd MMM YYYY HH:mm:ss z");
Date date = df.parse("Wed, 12 Feb 2020 8:52:39 GMT");
SimpleDateFormat dfout = new SimpleDateFormat( "d MM YYYY HH:mm:ss");
String res = dfout.format(date);
→ Ссылка
Автор решения: Edgar Khachatryan
        DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .parseCaseSensitive()
            .appendPattern("EEE, dd MMM yyyy H:mm:ss zzz")
            .toFormatter();

        DateTimeFormatter toFormat = new DateTimeFormatterBuilder()
            .parseCaseSensitive()
            .appendPattern("dd.MM.yyyy H:mm:ss")
            .toFormatter();

        ZonedDateTime time = LocalDateTime.parse("Wed, 12 Feb 2020 8:52:39 GMT", formatter)
            .atZone(ZoneId.systemDefault());

        String format = time.format(toFormat);
        System.out.println(format);

У DateTimeFormatter очень хорошая документация советую "пройтись" по-нему . В этом коде мы просто получаем LocalDateTime от нашей даты а потом ZonedDateTime добавляя зону, которая настроен в системе. Ну а в конце просто формат в строку в том паттерне который вам нужен.

→ Ссылка