2017-02-13 30 views
4

Как я могу преобразовать java.util.Date в строку с помощьюjava.util.date в строку с помощью DateTimeFormatter

DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss") 

объекта Дата, который я получаю передается

DateTime now = new DateTime(date); 
+0

Пожалуйста, покажите ваш полный код –

+0

Возможный дубликат: http://stackoverflow.com/questions/5683728/convert-java-util-date-to-string – Peter

+0

@PeterKuebler Я пытаюсь использовать DateTimeFormatter –

ответ

0

, так как я предполагаю, вы используете Joda API: Ergo, DateTimeFormatter является пришедшим от org.joda.time.format.DateTimeFormatter:

String dateTime = "02-13-2017 18:20:30"; 
// Format for input 
DateTimeFormatter dtf = DateTimeFormat.forPattern("MM-dd-yyyy HH:mm:ss"); 
// Parsing the date 
DateTime jodatime = dtf.parseDateTime(dateTime); 

System.out.println(jodatime); 
+0

@CorkKochi Надеюсь, вы на самом деле не называете 'new DateTime (new Date())'. – shmosel

+0

@shmosel Я отправил ответ –

1
DateTime now = new DateTime(date); 
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss"); 
now.toString(dtf) 
7

Если вы используете Java 8, вы не должны использовать java.util.Date в первую очередь (если вы не получите Date объект из библиотеки, вы не имеете никакого контроля над).

В любом случае, вы можете преобразовать Date к java.time.Instant с помощью:

Date date = ...; 
Instant instant = date.toInstant(); 

Поскольку вы заинтересованы только в дате и времени, без информации часового пояса (я предполагаю, что все UTC), вы можете преобразовать что мгновенная к LocalDateTime объекта:

LocalDateTime ldt = instant.atOffset(ZoneOffset.UTC).toLocalDateTime(); 

Наконец, вы можете распечатать его с:

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"); 
System.out.println(ldt.format(fmt)); 

Или используйте предопределенный форматтер, DateTimeFormatter.ISO_LOCAL_DATE_TIME.

System.out.println(ldt.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)); 

Обратите внимание, что если вы не предоставите форматчик, вызывая ldt.toString дает выход в стандартном формате ISO 8601 (включая миллисекунды) - что может быть приемлемо для вас.

+0

Служба, которую я использую, возвращает объект java.util.Date –

+0

@CorkKochi Если вы * должны * использовать объект 'java.util.Date', конвертировать, как показано в этом ответе. См. Новые методы преобразования, добавленные в старые классы, такие как ['Date.from (Instant)'] (https://docs.oracle.com/javase/8/docs/api/java/util/Date.html#from -java.time.Instant-) и ['Date :: toInstant()'] (https://docs.oracle.com/javase/8/docs/api/java/util/Date.html#toInstant--) , –

0

DateTimeFormatterOBJECT = DateTimeFormatter.ofPattern ("DD/MMM/YYYY HH // MM/SS");

String MyDateAndTime = LocalDate.now(). Format (DateTimeFormatterOBJECT);

+0

Вы можете использовать вышеуказанный код, чтобы получить простую дату в своем собственном формате, указав формат в первой строке кода, а также вы можете использовать любую функцию с плюсом или минусом во второй строке кода; –

+0

Чтобы добавить пояснения к своему ответу, отредактируйте свой ответ, а не используйте комментарии. – Hexfire