2016-03-11 4 views
7

«10 марта 2016 года 18:30:00« Это моя дата, и я хочу преобразовать ее в «10 марта 2016 года». Могу ли я использовать SimpleDateFormat в android, и я не получаю точный шаблон для его преобразования. Помощь и помощь Plz заранееКак преобразовать дату в определенном формате в 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); 

Будет ли это работать? Если да, пожалуйста, может кто-нибудь дать мне образец этого формата ??? Thanx заранее.

+0

Да, я буду любить, Но какой шаблон я должен там дать? –

ответ

13

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

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 в течение нескольких часов, чтобы получить правильное время.

+0

Thanx Это сработало :) –

1

Вы должны указать String in 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

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

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"); 
1

Для полноты картины, вот это современная версия. Это для тех, кто читает это, кто использует 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, см. How to use ThreeTenABP in Android Project. На других Java 6 и 7 используйте ThreeTen Backport.

Смежные вопросы