2014-01-02 5 views
2

Я пытаюсь разработать приложение для Android, учитывая, что у меня есть некоторые данные с сервера.Как форматировать дату в java/android

Здесь мне нужно преобразовать дату, которая поставляется в заданном формате «2013-12-31T15: 07: 38.6875000-05: 00» мне нужно, чтобы преобразовать это в к объекту даты или календарного объекта хау мы можем это сделать?

Я попытался с кодом, приведенным ниже. Но это не достигает моих ожиданий

String dateString="2013-12-31T15:07:38.6875000-05:00"; 
Date date = null; 
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm a"); 
try { 
    date = df.parse(dateString); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
return date; 
+0

то, что DateString здесь? –

+0

Я только что отредактировал мои вопросы? – ranjith

+0

FYI, этот формат является стандартным [ISO 8601] (https://en.wikipedia.org/wiki/ISO_8601). –

ответ

4

Ваша строка формата не соответствует формату даты, который вы получаете. Вы должны использовать следующую строку формата:

"yyyy-MM-dd'T'HH:mm:ss.SSSX" 
+0

Позвольте мне попробовать .. спасибо за ваш быстрый ответ .... – ranjith

+0

нет, все еще я получил ошибку. синтаксический анализ работает неправильно – ranjith

+0

OK. Вы можете напечатать значение 'dateString'. Какую ценность он содержит? Если это значение, которое вы указали, оно должно работать. –

3

Шаг 1:

Как вы получаете 2013-12-31T15:07:38.6875000-05:00 в качестве значения даты, вам необходимо определить формат для синтаксического анализа даты.

String myDateString= "2013-12-31T15:07:38.6875000-05:00"; 
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
try { 
    date = df.parse(myDateString); 
} catch (ParseException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

Шаг 2: После разбора даты, вы можете отформатировать его в нужный формат.

Например: Давайте преобразуем разобранную Date объект в значение yyyy-MM-dd.

SimpleDateFormat newFormat = new SimpleDateFormat("yyyy-MM-dd"); 
String strNewDate = newFormat.format(date); 
+1

это тоже хороший ответ ... объяснил больше ... спасибо – ranjith

+0

вот какая-то проблема, когда мы конвертируем эту дату в Tue Dec 31 17:02:13 GMT 2013 некоторое изменение во времени, потому что я не могу использовать «z» в конце – ranjith

1

использовать этот код

String string = "2013-12-31T15:07:38.6875000-05:00"; 
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 

Simple date formats

+0

, наконец, его разрешено, я удалил «z» с конца – ranjith

0

Если вы использовали Joda-Time библиотеки, вы можете пропустить форматировщик и кормить ISO 8601 строку непосредственно к конструктору DateTime объекта.

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so. 
// import org.joda.time.*; 
// import org.joda.time.format.*; 

DateTime dateTime_DefaultTimeZone = new DateTime("2013-12-31T15:07:38.6875000-05:00"); 

Выход к локализованным часового пояса и языка ...

String localizedOutput = DateTimeFormat.forStyle("LS").withLocale(Locale.CANADA_FRENCH).withZone(DateTimeZone.forID("America/Montreal")).print(dateTime_DefaultTimeZone); 

самосвала утешать ...

System.out.println("dateTime_DefaultTimeZone: " + dateTime_DefaultTimeZone); 
System.out.println("localizedOutput: " + localizedOutput); 

При запуске ...

dateTime_DefaultTimeZone: 2013-12-31T12:07:38.687-08:00 
localizedOutput: 31 décembre 2013 15:07 
Смежные вопросы