отображать Java.util.Date в определенном формате - PullRequest
48 голосов
/ 07 июня 2011

У меня есть следующий сценарий:

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(dateFormat.parse("31/05/2011"));

дает вывод

Tue May 31 00:00:00 SGT 2011

, но я хочу, чтобы вывод был

31/05/2011 

Мне нужно использоватьРазбор здесь, потому что даты должны быть отсортированы как даты, а не как строки.

Есть идеи ??

Ответы [ 10 ]

70 голосов
/ 07 июня 2011

Как насчет:

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(dateFormat.format(dateFormat.parse("31/05/2011")));

> 31/05/2011
52 голосов
/ 07 июня 2011

Вам необходимо пройти SimpleDateFormat.format, чтобы отформатировать дату в виде строки.

Вот пример из String -> Date -> String.

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("31/05/2011");

System.out.println(dateFormat.format(date));   // prints 31/05/2011
//                            ^^^^^^
15 голосов
/ 07 июня 2011

Использовать SimpleDateFormat.format

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date();
String sDate= sdf.format(date);
6 голосов
/ 02 апреля 2014

Вы можете использовать простой формат даты в Java, используя код ниже

SimpleDateFormat simpledatafo = new SimpleDateFormat("dd/MM/yyyy");
Date newDate = new Date();
String expectedDate= simpledatafo.format(newDate);
4 голосов
/ 07 июня 2011

Это не имеет смысла, но:

System.out.println(dateFormat.format(dateFormat.parse("31/05/2011")))

SimpleDateFormat.parse() = // parse Date from String
SimpleDateFormat.format() = // format Date into String
3 голосов
/ 16 октября 2013

Если вы хотите просто вывести дату, просто используйте следующее:

System.out.printf("Date: %1$te/%1$tm/%1$tY at %1$tH:%1$tM:%1$tS%n", new Date());

Как видно здесь . Или, если вы хотите получить значение в строку (например, для построения SQL), вы можете использовать:

String formattedDate = String.format("%1$te/%1$tm/%1$tY", new Date());

Вы также можете настроить свои выходные данные, следуя Java API при преобразовании даты / времени .

1 голос
/ 12 февраля 2019

java.time

Вот современный ответ.

    DateTimeFormatter sourceFormatter = DateTimeFormatter.ofPattern("dd/MM/uuuu");
    DateTimeFormatter displayFormatter = DateTimeFormatter
            .ofLocalizedDate(FormatStyle.SHORT)
            .withLocale(Locale.forLanguageTag("zh-SG"));

    String dateString = "31/05/2011";
    LocalDate date = LocalDate.parse(dateString, sourceFormatter);
    System.out.println(date.format(displayFormatter));

Вывод этого фрагмента:

31/05/11

Посмотрите, сможете ли вы жить с двузначным годом.Или используйте FormatStyle.MEDIUM, чтобы получить 2011年5月31日.Я рекомендую вам использовать встроенные форматы даты и времени в Java, когда это возможно.Это проще и очень хорошо подходит для интернационализации.

Если вам нужен точный формат, который вы указали, просто используйте исходный форматер в качестве форматера дисплея:

    System.out.println(date.format(sourceFormatter));

31/05/ 2011

Рекомендую не использовать SimpleDateFormat.Это общеизвестно хлопотно и давно устарело.Вместо этого я использую java.time, современный Java-интерфейс даты и времени.

Чтобы получить определенный формат, вам нужно отформатировать проанализированную дату обратно в строку.Ни у старомодного Date, ни у современного LocalDate не может быть формата.

Ссылка: Учебное пособие по Oracle: Дата и время , объясняющее, как использоватьjava.time.

1 голос
/ 07 июня 2011

У вас уже есть это (это то, что вы ввели) parse проанализирует дату в заданном формате и напечатает объект полной даты (toString).

0 голосов
/ 09 ноября 2013

У меня было что-то вроде этого, я бы предложил использовать java для таких вещей, не вставляйте шаблонный код

BasicImplementation

0 голосов
/ 07 июня 2011

Это поможет вам.DateFormat df = new SimpleDateFormat ("дд / мм / гггг");печать (формат даты (новая дата));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...