Как я могу преобразовать эту строку в стандартную дату в Java? - PullRequest
3 голосов
/ 25 сентября 2010

Ранее я отправил следующий вопрос: Как я могу преобразовать эту дату в Java?

Но теперь я хотел бы знать, как я могу преобразовать эту строку в дату / время.

2010-03-15T16:34:46Z

Например: 03/15/10

ОБНОВЛЕНО:

String pattern = "MM/dd/yy 'at' HH:mm";
                Date date = new Date();
                try {
                    date = new SimpleDateFormat(pattern).parse(q.getUpdated_at());
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                dateText.setText(new SimpleDateFormat("MM/dd/yy 'at' hh:mma").format(date));

Дает мне такой результат как:

Mon Mar 15 16:34:50 MST 2010

Как мне отформатировать, чтобы оно было

03/15/10 at 4:34PM

?

Ответы [ 3 ]

8 голосов
/ 25 сентября 2010

Оба SimpleDateFormat и joda-time DateTimeFormat могут проанализировать это, используя этот шаблон:

String pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'";

Например:

Date date = new SimpleDateFormat(pattern).parse(dateString);

А (время года):

DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern);
DateTime dateTime = dtf.parseDateTime(s);

Обновление

У вас есть 2 формата даты - один для анализа ввода и один для форматирования вывода. Итак:

dateText.setText(new SimpleDateFormat("MM/dd/yy 'at' hh:mma").format(date));

(Конечно, ради оптимизации вы можете создать экземпляр SimpleDateFormat только один раз и использовать его повторно)

2 голосов
/ 26 сентября 2010

Короче говоря, вы хотите преобразовать дату в a строку формат в дату в другую строку формат . У вас есть:

2010-03-15T16:34:46Z

и вы хотите

03/15/10 at 4:34PM

Вы не хотите в конечном итоге использовать объект java.util.Date, как вы изначально подразумевали в своем вопросе. Вы также не хотите использовать его toString(), поскольку он возвращает фиксированный формат, определенный в его javadoc .

Ответ Божо остается в силе. Используйте java.text.SimpleDateFormat. Во-первых, вам нужно разобрать дату в строковом формате в объект Date, чтобы вы могли отформатировать обратно в другой строковый формат.

// First parse string in pattern "yyyy-MM-dd'T'HH:mm:ss'Z'" to date object.
String dateString1 = "2010-03-15T16:34:46Z";
Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(dateString1);

// Then format date object to string in pattern "MM/dd/yy 'at' h:mma".
String dateString2 = new SimpleDateFormat("MM/dd/yy 'at' h:mma").format(date);
System.out.println(dateString2); // 03/15/10 at 4:34PM
0 голосов
/ 26 сентября 2010

Если вы хотите отформатировать строку вывода, измените следующую строку в вашем коде

dateText.setText(date.toString());

до

dateText.setText(String.format("%1$tm/%1$td/%1$ty at %1$tl:%1$tM%1$Tp", date));
...