java.util.date使用DateTimeFormatter转换为String

Cor*_*chi 13 java datetime jodatime java-8

如何使用java将java.util.Date转换为String

 DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss")
Run Code Online (Sandbox Code Playgroud)

我得到的Date对象被传递

DateTime now = new DateTime(date);
Run Code Online (Sandbox Code Playgroud)

ass*_*ias 20

如果您使用的是Java 8,则不应该java.util.Date首先使用(除非您Date从无法控制的库中接收对象).

在任何情况下,您都可以将a转换Datejava.time.Instant使用:

Date date = ...;
Instant instant = date.toInstant();
Run Code Online (Sandbox Code Playgroud)

由于您只对日期和时间感兴趣,没有时区信息(我假设一切都是UTC),您可以将该瞬间转换为LocalDateTime对象:

LocalDateTime ldt = instant.atOffset(ZoneOffset.UTC).toLocalDateTime();
Run Code Online (Sandbox Code Playgroud)

最后你可以打印出来:

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

或者使用预定义的格式化程序DateTimeFormatter.ISO_LOCAL_DATE_TIME.

System.out.println(ldt.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
Run Code Online (Sandbox Code Playgroud)

请注意,如果您不提供格式化程序,则调用ldt.toString会以标准ISO 8601格式(包括毫秒)提供输出- 这可能是您可以接受的.

  • 我正在使用的服务正在返回一个 java.util.Date 对象 (3认同)

小智 8

java.util.Date date = new java.util.Date(System.currentTimeMillis());
Instant instant = date.toInstant();

LocalDateTime ldt = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss");
System.out.println(ldt.format(fmt));
Run Code Online (Sandbox Code Playgroud)


ΦXo*_*a ツ -1

因为我假设您正在使用 joda API:因此,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 );
Run Code Online (Sandbox Code Playgroud)