2014-10-01 3 views
-2

У меня есть строка, которая содержит дату, как так:Как преобразовать формат даты String в Android?

String startTime = "2014-10-11T17:00:41+0000" 

Я пытаюсь переформатировать эту строку так, что он читает, как так вместо того, чтобы:

Oct 11, 2014 5:00 PM 
+1

Использование Formatter в Java: http://docs.oracle.com/javase/7/docs/api/java/util/Formatter. html это вариант по крайней мере. String.format() может делать то, что вам нужно, но не дает эффективности Formatter (через http://stackoverflow.com/questions/513600/should-i-use-javas-string-format-if -производство-важно) – zgc7009

+0

Dare Я предлагаю использовать jodatime? –

ответ

1

С Date объекты не сохраняют информацию о часовом поясе, вам необходимо конкретно установить смещение часового пояса исходной даты в целевой форматтер. Вот полный код для преобразования из одного формата в другой при сохранении смещения часового пояса (+0000 в вашем случае). Более подробную информацию о TimeZone класс here и о том, как построить правильную строку даты и времени для вашего требования here.

try { 
    DateFormat originalFormat = new SimpleDateFormat(
      "yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH); 
    DateFormat targetFormat = new SimpleDateFormat(
      "MMM dd, yyyy K:mm a", Locale.ENGLISH); 
    targetFormat.setTimeZone(TimeZone.getTimeZone("GMT+0000")); 
    Date date = originalFormat.parse("2014-10-11T17:00:41+0000"); 
    String formattedDate = targetFormat.format(date); 

    System.out.println(formattedDate); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

Выход: 11 октября 2014 5:00 вечера

1

Используйте SimpleDateFormat для разбора строки ввода и представления в новом формате: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

Ex .:

SimpleDateFormat sdfmtIn = new SimpleDateFormat("dd/MM/yy"); 
SimpleDateFormat sdfmtOut= new SimpleDateFormat("dd-MMM-yyyy"); 
java.util.Date date = sdfmtIn.parse(strInput); 
String strOutput = sdfmtOut.format(date); 
+0

Я пробовал это, но у него все еще есть материал GMT, как я могу избавиться от этого? – Gchorba

+0

Попробуйте установить часовой пояс: stdmfout.setTimeZone (TimeZone.getTimeZone («UTC»)); – nister

+0

Что это значит? – Gchorba

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