Android

How to convert Date to a particular format in android?

Как преобразовать дату в определенный формат в 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);

Сработают ли эти шаги? Если да, может кто-нибудь, пожалуйста, дать мне шаблон этого формата? Заранее спасибо.

Переведено автоматически
Ответ 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

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

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);
Ответ 3

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

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;
}

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

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

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

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

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
2023-11-28 10:23 java android