如何将即时转换为日期格式?

我可以这样把一个 java.util.Date转换成一个 java.time.Instant(Java8及更高版本) :

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 8);
cal.set(Calendar.MINUTE, 30);
Date startTime = cal.getTime();
Instant i = startTime.toInstant();

有人可以让我知道有关转换的即时日期与特定的日期和时间格式?即2015-06-028:30:00

我查了 API,但没有找到满意的答案。

279541 次浏览

如果你想把一个 Instant转换成一个 Date:

Date myDate = Date.from(instant);

然后你可以用 SimpleDateFormat来解答你的问题的格式部分:

SimpleDateFormat formatter = new SimpleDateFormat("dd MM yyyy HH:mm:ss");
String formattedDate = formatter.format(myDate);

一个瞬间就是它所说的: 一个特定的时间瞬间——它没有日期和时间的概念(纽约和东京的时间在给定的瞬间是不一样的)。

要将其打印为日期/时间,首先需要决定使用哪个时区。例如:

System.out.println(LocalDateTime.ofInstant(i, ZoneOffset.UTC));

这将以 ISO 格式打印日期/时间: 2015-06-02T10:15:02.325

如果需要不同的格式,可以使用格式化程序:

LocalDateTime datetime = LocalDateTime.ofInstant(i, ZoneOffset.UTC);
String formatted = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss").format(datetime);
System.out.println(formatted);

试试 解析和格式化

举个例子 解析

String input = ...;
try {
DateTimeFormatter formatter =
DateTimeFormatter.ofPattern("MMM d yyyy");
LocalDate date = LocalDate.parse(input, formatter);
System.out.printf("%s%n", date);
}
catch (DateTimeParseException exc) {
System.out.printf("%s is not parsable!%n", input);
throw exc;      // Rethrow the exception.
}

格式化

ZoneId leavingZone = ...;
ZonedDateTime departure = ...;


try {
DateTimeFormatter format = DateTimeFormatter.ofPattern("MMM d yyyy  hh:mm a");
String out = departure.format(format);
System.out.printf("LEAVING:  %s (%s)%n", out, leavingZone);
}
catch (DateTimeException exc) {
System.out.printf("%s can't be formatted!%n", departure);
throw exc;
}

这个示例的输出同时显示到达和离开的时间如下:

LEAVING:  Jul 20 2013  07:30 PM (America/Los_Angeles)
ARRIVING: Jul 21 2013  10:20 PM (Asia/Tokyo)

有关详情,请参阅此网页- Https://docs.oracle.com/javase/tutorial/datetime/iso/format.html