2014-09-07 2 views
0

Так что я пытаюсь разобрать строку с датой в другой формат, но она не меняет формат. Возможно, функция синтаксического анализа переопределяет параметры SimpleDateFormat?SimpleDateFormat.parse() не использует правильный формат даты

Date dateOfItem = new SimpleDateFormat("E, d MMMM yyyy", Locale.ENGLISH).parse(item.date); 
Log.v("APP", dateOfItem.toString()); 

item.date, например, это: Вт, 12 мая 2015 И то, как именно я хочу формат быть в дате. Но журнал показывает это как: Вт 12 май 00:00:00 CDT 2015, который не является форматом, который у меня есть в SimpleDateFormat.

Так как же взять эту строку и преобразовать ее в дату с форматом, который у меня есть как параметр в SimpleDateFormat?

+0

См. [Этот другой вопрос] (http://stackoverflow.com/q/22259712/642706) и мой ответ для получения более подробной информации и альтернативы с использованием библиотеки Joda-Time. Также см. ['DateTimeFormat.forStyle (« F- »)'] (http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html#forStyle (java. lang.String)) на Joda-Time для таких форматов. –

ответ

3

A Date не имеет формата. Это просто

представляет определенный момент во времени, с точностью до миллисекунды

То, что вы видите в журналах, является результатом Date#toString().

Так или использовать SimpleDateFormat для format(Date) вашего Date объекта или использовать оригинальное String значение, которое вы имели.

1

использовать этот процесс

   DateFormat df = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss E", Locale.getDefault()); 
       curdate = df.parse("String date"); 
      SimpleDateFormat formatter = new SimpleDateFormat("E, dd MMM yyyy"); 
      newFormat = formatter.format(curdate); 
1

Вы делаете обратный синтаксический анализ.

У вас есть item.data, который находится в формате E, d MMMM yyyy, а затем проанализируйте его. Если вы хотите напечатать дату в указанном формате, вы должны использовать метод формата SimpleDateFormat #.

SimpleDateFormat sdf = new SimpleDateFormat("E, d MMMM yyyy"); 
Log.v("APP", sdf.format(item.date)); 

Также проверьте javadoc

1

Вы начинаете с String и положить в Date. И это все, что вы используете для SimpleDateFormat.

Затем вы используете метод по умолчанию toString(), поэтому он не будет применяться к произвольному форматированию.

Что вам нужно сделать, это:

SimpleDateFormat format = new SimpleDateFormat("E, d MMMM yyyy", Locale.ENGLISH); 
Date dateOfItem = format.parse(item.date); //string to date 
Log.v("APP", format.format(dateOfItem)); //or date to string 
1

Попробуйте вместо этого:

DateFormat formatter = new SimpleDateFormat("E, d MMMM yyyy", Locale.ENGLISH); 
Log.v("APP", formatter.format(dateOfItem)); 

Использование dateOfItem.toString() использует свой собственный output format.

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