2012-04-10 17 views
0

Мой формат струна: M/d/гггг час: мин: сек ааПреобразование строки формата в другой формат даты

Теперь я хочу, чтобы изменить его в YYYY-MM-ДДTчч: сс мм.

Как его изменить в этом формате. Скажите, пожалуйста, соответствующее решение

+0

Вам придется разобрать * источник * дату самостоятельно (с помощью 'HttpDateParser') построить' объекта Calendar' из разобранной даты и затем передайте его методу SimpleDateFormat.format() ', чтобы переформатировать его в соответствии с вашими потребностями. – mrvincenzo

+1

На самом деле, в вашем случае может быть проще переформатировать его напрямую (с помощью методов манипуляции строками). – mrvincenzo

ответ

4

Метод getConvertedDate(String), будет делать простой текстовый парсинг для преобразования.

private String getConvertedDate(String inputDate) { 
    // extract and adjust Month 
    int index = inputDate.indexOf('/'); 
    String month = inputDate.substring(0, index); 
    if (month.length() < 2) { 
     month = "0" + month; 
    } 

    // extract and adjust Day 
    inputDate = inputDate.substring(index + 1); 
    index = inputDate.indexOf('/'); 
    String day = inputDate.substring(0, index); 
    if (day.length() < 2) { 
     day = "0" + day; 
    } 

    // extract Year 
    inputDate = inputDate.substring(index + 1); 
    index = inputDate.indexOf(' '); 
    String year = inputDate.substring(0, index); 

    // extract Hour 
    inputDate = inputDate.substring(index + 1); 
    index = inputDate.indexOf(':'); 
    String hour = inputDate.substring(0, index); 

    // extract and adjust Minute 
    inputDate = inputDate.substring(index + 1); 
    index = inputDate.indexOf(':'); 
    String minute = inputDate.substring(0, index); 
    if (minute.length() < 2) { 
     minute = "0" + minute; 
    } 

    // extract and adjust Second 
    inputDate = inputDate.substring(index + 1); 
    index = inputDate.indexOf(' '); 
    String second = inputDate.substring(0, index); 
    if (second.length() < 2) { 
     second = "0" + second; 
    } 

    // extract AM/PM marker 
    // adjust hour, +12 for PM 
    inputDate = inputDate.substring(index + 1);   
    String am_pm_marker = inputDate.substring(0); 
    if (am_pm_marker.equalsIgnoreCase("pm")) { 
     int hourValue = 0; 
     try { 
      hourValue = Integer.parseInt(hour); 
     } catch (Exception e) { 
     } 
     hourValue += 12; 
     hour = "" + hourValue; 
     if (hour.length() < 2) { 
      hour = "0" + hour; 
     } 
    } else { 
     if (hour.length() < 2) { 
      hour = "0" + hour; 
     } 
    } 

    String outputDate = year + "-" + month + "-" + day; 
    outputDate += "T" + hour + ":" + minute + ":" + second; 
    return outputDate; 
} 

Пример ввод и вывод:

String input = "04/01/2012 9:55:47 pm"; 
System.out.println("Output: " + getConvertedDate(input)); 
// Output: 2012-04-01T21:55:47 
+0

Я уже использовал тот же метод. В любом случае спасибо за ваш ответ. – AnkitRox

-2
Date date = (Date)new SimpleDateFormat("M/d/yyyy h:m:s aa").parse(your_string_date); 
String finalFormat = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ss").format(date) 

В основном первый SimpleDateFormat распознает формат оригинала и разбирает его в Date. Затем второй форматирует объект даты на то, что вам нужно.

У меня нет jdk для тестирования здесь, но он должен работать.

Проверьте эти ссылки для синтаксиса формата в случае что-то не работает:
http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html

+1

API-документы, к которым вы обращаетесь, относятся к Java SE, в то время как вопрос о ** Java ME **, который может не иметь «SimpleDateFormat» (J2ME CLDC 1.0 и 1.1, конечно, не имеет) – gnat

+1

«SimpleDateFormat (« M/d/yyyy h : m: s aa "). parse()" Метод "разбора" недоступен для класса SimpleDateFormat. – AnkitRox

+0

@AnkitRox, вы можете проверить ответ http://stackoverflow.com/questions/9892156/blackberry-how-to-convert-time-from-string-in-hhhmmss-ss-to-mmss-format. Я думаю, что 'M/d/yyyy h: m: s aa' - не обычный шаблон для использования HttpDateParser, http://www.blackberry.com/developers/docs/6.0.0api/net/rim/device/api /io/http/HttpDateParser.html. – Rupak

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