Подтвердить что ты не робот

Как конвертировать дату в определенный формат в Android?

"10 марта 2016 г. 18:30:00" Это моя дата, и я хочу преобразовать ее в "10 марта 2016 г.". Могу ли я использовать SimpleDateFormat в Android. Я не получаю точный образец, чтобы преобразовать это. Пожалуйста, помогите и спасибо заранее

String date="Mar 10, 2016 6:30:00 PM";
SimpleDateFormat spf=new SimpleDateFormat("Some Pattern for above date");
Date newDate=spf.format(date);
spf= new SimpleDateFormat("dd MMM yyyy");
String date = spf.format(newDate);

Будут ли эти шаги работать? Если да, можете ли вы дать мне образец этого формата? Заранее спасибо.

4b9b3361

Ответ 1

Это модифицированный код, который вы должны использовать:

String date="Mar 10, 2016 6:30:00 PM";
SimpleDateFormat spf=new SimpleDateFormat("MMM dd, yyyy hh:mm:ss aaa");
Date newDate=spf.parse(date);
spf= new SimpleDateFormat("dd MMM yyyy");
date = spf.format(newDate);
System.out.println(date);

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

Java 8 и позже

Java 8 представила новые классы для манипулирования временем, поэтому в таких случаях используйте следующий код:

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd, yyyy h:mm:ss a");
    LocalDateTime dateTime = LocalDateTime.parse(date, formatter);
    DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("dd MMM yyyy");
    System.out.println(dateTime.format(formatter2));

Используйте h для часового формата, так как в этом случае час имеет только одну цифру.

Ответ 2

Я создал метод для этой проблемы. Нам просто нужно передать формат текущей даты, формат требуемой даты и строка даты.

private String changeDateFormat(String currentFormat,String requiredFormat,String dateString){
    String result="";
    if (Strings.isNullOrEmpty(dateString)){
        return result;
    }
    SimpleDateFormat formatterOld = new SimpleDateFormat(currentFormat, Locale.getDefault());
    SimpleDateFormat formatterNew = new SimpleDateFormat(requiredFormat, Locale.getDefault());
    Date date=null;
    try {
        date = formatterOld.parse(dateString);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    if (date != null) {
        result = formatterNew.format(date);
    }
    return result;
}

Этот метод вернет Date String в требуемом формате. В вашем случае вызов метода будет:

String date = changeDateFormat("MMM dd, yyyy hh:mm:ss a","dd MMM yyyy","Mar 10, 2016 6:30:00 PM");

Ответ 3

Вы должны parse() String into Date, а затем отформатировать его в желаемый формат. Вы можете использовать формат MMM dd, yyyy HH:mm:ss a для синтаксического анализа данной строки.

Вот фрагмент кода:

public static void main (String[] args) throws Exception
{
    String date = "Mar 10, 2016 6:30:00 PM";
    SimpleDateFormat spf = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a");
    Date newDate = spf.parse(date);
    spf = new SimpleDateFormat("dd MMM yyyy");
    String newDateString = spf.format(newDate);
    System.out.println(newDateString);
}

Вывод:

10 Mar 2016

Ответ 4

Для полноты, вот современная версия. Это для тех, кто читает это, кто использует Java 8 или более позднюю версию или доволен (хорошей и будущей) внешней библиотекой.

    String date = "Mar 10, 2016 6:30:00 PM";
    DateTimeFormatter parseFormatter 
            = DateTimeFormatter.ofPattern("MMM d, uuuu h:mm:ss a", Locale.ENGLISH);
    DateTimeFormatter newFormatter 
            = DateTimeFormatter.ofPattern("d MMM uuuu", Locale.ENGLISH);
    date = LocalDateTime.parse(date, parseFormatter).format(newFormatter);
    System.out.println(date);

Отпечатает желаемый

10 Mar 2016

Обратите внимание на использование явного языка для обоих объектов DateTimeFormatter. "Мар" и "ПМ" оба находятся на английском языке, поэтому ни синтаксический анализ, ни форматирование не будут работать, если не используется англоязычная локаль. Предоставляя это явно, мы делаем код достаточно прочным, чтобы вести себя так, как ожидалось, также на компьютерах и JVM с другими локалями по умолчанию.

Чтобы использовать вышеприведенное на Android, используйте ThreeTenABP, см. Как использовать ThreeTenABP в Android-проекте. На других Java 6 и 7 используйте ThreeTen Backport.

Ответ 5

преобразование строки в дату и дату в строку

String deliveryDate="2018-09-04";                       
SimpleDateFormat dateFormatprev = new SimpleDateFormat("yyyy-MM-dd");
Date d = dateFormatprev.parse(deliveryDate);
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE dd MMM yyyy");
String changedDate = dateFormat.format(d);

Ответ 6

public static String formatDate(String fromFormat, String toFormat, String dateToFormat) {
    SimpleDateFormat inFormat = new SimpleDateFormat(fromFormat);
    Date date = null;
    try {
        date = inFormat.parse(dateToFormat);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    SimpleDateFormat outFormat = new SimpleDateFormat(toFormat);

    return outFormat.format(date);
}

Использование:   formatDate ("dd-MM-yyyy", "EEEE, dd MMMM yyyy", "26-07-2019");

Результат:   Пятница, 26 июля 2019 г.