关于java:如何将Instant转换为日期格式?

How to convert an Instant to a date format?

本问题已经有最佳答案,请猛点这里访问。

我可以通过这种方式将java.util.Date转换为java.time.Instant(Java 8及更高版本):

1
2
3
4
5
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-02 8:30:00

我已经通过api但找不到满意的答案。


如果要将Instant转换为Date

1
Date myDate = Date.from(instant);

然后您可以使用SimpleDateFormat作为问题的格式部分:

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

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

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

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

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

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

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


尝试解析和格式化

举个例子
解析

1
2
3
4
5
6
7
8
9
10
11
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.
}

格式化

1
2
3
4
5
6
7
8
9
10
11
12
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;
}

此示例的输出(打印到达和离开时间)如下:

1
2
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


1
Instant i = Instant.ofEpochSecond(cal.getTime);

在这里和这里阅读更多