如何将java.util.Date转换为String
java.util.Date
String
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss")
我得到的Date对象被传递给
DateTime now = new DateTime(date);
qnyhuwrf1#
如果您使用的是Java 8,那么首先就不应该使用java.util.Date(除非您从无法控制的库中接收到Date对象)。在任何情况下,您都可以使用以下命令将Date转换为java.time.Instant:
Date
java.time.Instant
Date date = ...; Instant instant = date.toInstant();
由于你只对日期和时间感兴趣,而没有时区信息(我假设所有内容都是UTC),你可以将该时刻转换为LocalDateTime对象:
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。
DateTimeFormatter.ISO_LOCAL_DATE_TIME
System.out.println(ldt.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
请注意,如果您没有提供格式化程序,调用ldt.toString将以标准的ISO 8601(包括毫秒)提供输出,这对您来说可能是可以接受的。
ldt.toString
ubof19bj2#
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));
9q78igpj3#
因为我假设你正在使用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 );
l5tcr1uw4#
DateTimeFormatterOBJECT=DateTimeFormatter.ofPattern("DD/MMM/YYYY HH//MM/SS"); String MyDateAndTime= LocalDate.now().format(DateTimeFormatterOBJECT);
dhxwm5r45#
DateTime dt = new DateTime(date); DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss"); dt.toString(dtf)
cvxl0en26#
您可以使用joda时间格式化程序类:
import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; # conflict with import java.time.format.DateTimeFormatter; final DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss") .withZone(DateTimeZone.UTC); System.out.println(DateTime.now().toString(formatter));
7jmck4yq7#
总结和简化@assylias和@Adrian Faur:
dateTimeFormatter.format(date.toInstant().atZone(ZoneId.systemDefault()));
不需要转换为LocalDateTime,格式接受TemporalAccessor
TemporalAccessor
7条答案
按热度按时间qnyhuwrf1#
如果您使用的是Java 8,那么首先就不应该使用
java.util.Date
(除非您从无法控制的库中接收到Date
对象)。在任何情况下,您都可以使用以下命令将
Date
转换为java.time.Instant
:由于你只对日期和时间感兴趣,而没有时区信息(我假设所有内容都是UTC),你可以将该时刻转换为
LocalDateTime
对象:最后,你可以打印它:
或者使用预定义的格式化程序
DateTimeFormatter.ISO_LOCAL_DATE_TIME
。请注意,如果您没有提供格式化程序,调用
ldt.toString
将以标准的ISO 8601(包括毫秒)提供输出,这对您来说可能是可以接受的。ubof19bj2#
9q78igpj3#
因为我假设你正在使用joda API:因此,DateTimeFormatter来自org.joda.time.format.DateTimeFormatter:
l5tcr1uw4#
dhxwm5r45#
cvxl0en26#
您可以使用joda时间格式化程序类:
7jmck4yq7#
总结和简化@assylias和@Adrian Faur:
不需要转换为
LocalDateTime
,格式接受TemporalAccessor