{"id":3670,"date":"2017-02-21T18:04:02","date_gmt":"2017-02-21T16:04:02","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=3670"},"modified":"2017-02-21T18:04:02","modified_gmt":"2017-02-21T16:04:02","slug":"java-time-duration","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2017\/02\/java-time-duration\/","title":{"rendered":"java.time.Duration"},"content":{"rendered":"<p>Eine Klasse Duration repr\u00e4sentiert Dauern von Zeiten und ist weder mit Zeitzonen verbunden noch mit anderen Zeitleisten. Daher ist auch ein Tag idealisiert exakt 24 Stunden lang, Schaltsekunden kennt die Klasse nicht, und einen Tag zu addieren hei\u00dft, 24 Stunden aufzurechnen.<\/p>\n<p>Die interne Berechnungseinheit ist Sekunden bzw. Nanosekunden, auch wenn Hilfsmethoden Zeiteinheiten bis Stunden erlauben. Dar\u00fcber wird eine Duration auch aufgebaut, \u00fcber ofXXX()-Methoden wie ofSeconds(long seconds, long nanoAdjustment) oder ofDays(long days). Differenzen bildet wieder Duration between(Temporal startInclusive, Temporal endExclusive), wobei Temporal eine Schnittstelle ist, die etwa von LocalDate, LocalDateTime, LocalTime, OffsetDateTime, OffsetTime, ZonedDateTime, Year, YearMonth, Instant implementiert wird, nicht aber von Period.<\/p>\n<p>Beispiel:\u00a0Wie viel Zeit vergeht zwischen der Ausf\u00fchrung?<\/p>\n<pre>Instant start = Instant.now();\n try\u00a0{\n \u00a0\u00a0Files.walk(\u00a0Paths.get(\u00a0System.getProperty(\u00a0\"user.home\"\u00a0)\u00a0)\u00a0).count();\n }\u00a0catch\u00a0(\u00a0Exception\u00a0e\u00a0)\u00a0{\u00a0}\n Instant end = Instant.now();\n System.out.println(\u00a0Duration.between( start, end ).toMillis()\u00a0+\u00a0\"\u00a0ms\"\u00a0);<\/pre>\n<p>Abgewandelt wird eine Duration wieder \u00fcber withXXX(\u2026) oder die minusXXX(\u2026)\/plusXXX(\u2026)-Methoden. Duration dividedBy(long divisor) teilt die Duration durch eine Zeit. Die neue Java 9-Methode long dividedBy(Duration divisor) sagt, wie oft der divisor in der Duration liegt.<\/p>\n<p>toNanos(), toMillis(), toSeconds() \u2013 neu in Java 9 \u2013, toMinutes(), toHours(), toDays() konvertieren in ein long, getNano() und getSeconds() liefern die zwei Bestandteile einer Duration als long. Wichtig ist der Unterschied: Die Getter liefern den Feldwert von Duration, w\u00e4hrend toXXX() immer konvertiert.<\/p>\n<p>Beispiel<\/p>\n<pre>Duration aSecond = Duration.of( 1, ChronoUnit.MINUTES );\nout.println( aSecond.getSeconds() ); \/\/ 60\nout.println( aSecond.getNano() ); \/\/ 0\nout.println( aSecond.toMinutes() ); \/\/ 1\nout.println( aSecond.toSeconds() ); \/\/ 60\nout.println( aSecond.toNanos() ); \/\/ 60000000000<\/pre>\n<p>In Java 9 kommen Methoden hinzu, die die Anteile an Minuten, Sekunden, usw. erfragen, und zwar long toDaysPart(), int toHoursPart(), int toMinutesPart(), int toSecondsPart(), int toMillisPart() und int toNanosPart().<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine Klasse Duration repr\u00e4sentiert Dauern von Zeiten und ist weder mit Zeitzonen verbunden noch mit anderen Zeitleisten. Daher ist auch ein Tag idealisiert exakt 24 Stunden lang, Schaltsekunden kennt die Klasse nicht, und einen Tag zu addieren hei\u00dft, 24 Stunden aufzurechnen. Die interne Berechnungseinheit ist Sekunden bzw. Nanosekunden, auch wenn Hilfsmethoden Zeiteinheiten bis Stunden erlauben. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1,11,66,85],"tags":[],"class_list":["post-3670","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-insel","category-java-8","category-java-9"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=3670"}],"version-history":[{"count":4,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3670\/revisions"}],"predecessor-version":[{"id":3674,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/3670\/revisions\/3674"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=3670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=3670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=3670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}