Duration amountToAdd = Duration.parse("PT20.345S"); // Represent a span of time. Here, about twenty and a third seconds.
Instant now = Instant.now() ; // Capture the current moment in UTC.
Instant otherMoment = now.plus(amountToAdd); // Add the span-of-time to the current moment, for a moment in the future (or in the past if the duration is negative).
String output = otherMoment.toString(): // Generate a String in standard ISO 8601 format.
2018-06-30T19: 34: 47Z
Преобразование из современного java.time класса в унаследованный класс.
Date date1 = Date.from(otherMoment);
System.out.println(date1);
Сейчас я работаю в часовом поясе Европы / Копенгагена.
Сб. 30 июня 21:34:47 CEST 2018
Если я использую другую примерную строку продолжительности, P2DT3H4M
, я получу:
вт. 03 июля 00:38:26 CEST 2018
Или, если вы в одной строке:
Date date1 = Date.from(Instant.now().plus(Duration.parse("PT20.345S")));
Класс java.util.Date
давно устарел, поэтому в идеале вам не следует его иметь. В любом случае, если он вам нужен, как правило, для устаревшего API, который вы не можете изменить или не хотите менять прямо сейчас, вы думаете правильно, выполняя как можно больше логики, используя java.time
, современный Java API даты и времени и преобразование в Date
только в конце. Ближайший кузен Date
в современном мире - Instant
, и существуют прямые преобразования между Instant
и Date
, поэтому я использую этот класс. Instant
также прекрасно независимо от смещения зон и часовых поясов.