我可以通过这种方式将java.util.Date
转换为java.time.Instant
(Java 8及更高版本):
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
:
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
如果你想要一个不同的格式,你可以使用formatter:
LocalDateTime datetime = LocalDateTime.ofInstant(i, ZoneOffset.UTC);
String formatted = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss").format(datetime);
System.out.println(formatted);
try 解析和格式化
举个例子
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.
}
<<p> 格式/strong> 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