8 Mayıs 2018 Salı

Duration Sınıfı

Giriş
Period'dan farklı olarak artık yıl, yaz saati gibi şeyleri hesaba katmaz. LocalTime gibi 23:59:59 sınırı yoktur. Daha uzun süreleri de saklayabilir. LocalTime ile arasındaki en önemli farklı açıklayan cümle şöyle
LocalDateTime is a Temporal and these represent a point in time, not a duration.

Although "1:30:00" can be interpreted as a point and as a duration, the semantics are different.
* As a point in time: "Half past one in the morning"
* As a duration: "An hour and a half"

One reason this is important is that "25:30:02" is a valid duration, but not a valid time-of-day.

between metodu
Örnek 1
Şöyle yaparız.
Temporal startInclusive = ...;
Temporal endExclusive = ...;
Duration duration = Duration.between(startInclusive, endExclusive);
Örnek 2
Elimizde iki Instant olsun.
Instant start = ...;
Instant stop = ...;
Şöyle yaparız.
Duration d = Duration.between (start,stop);
getSeconds metodu
Şöyle yaparız.
int seconds = duration.getSeconds();
minus metodu
Şöyle yaparız.
Duration diff = duration.minus(duration2);
of metodu
Örnek
Şöyle yaparız.
ChronoUnit unit = ...;
Duration duration = Duration.of(1, unit).toNanos();
Örnek
Şöyle yaparız. toString() metodu HMS formatında çıktı verir.
System.out.println(Duration.of(1512431637067L, ChronoUnit.MILLIS));
// output: PT420119H53M57.067S
ofHours metodu
Şöyle yaparız.
Duration compared = Duration.ofHours(8);
parse metodu
Format P ile başlar. T time başladığını gösterir. h saati gösterir.
Örnek
Şu girdi yanlış olduğu için parse edilemez.
"PT10HMS";
Doğru girdi şöyle olmalı
"PT10H0M0S";
Örnek
Şöyle yaparız.
Duration duration = Duration.parse("PT8h");//8 saat
Örnek
Şöyle yaparız.
//convert first to a valid Duration representation
String durationStr = input.replaceAll("(\\d+):(\\d+):(\\d+)", "PT$1H$2M$3S");
Duration duration = Duration.parse(durationStr);
int seconds = duration.getSeconds();
plus metodu
Şöyle yaparız.
Duration duration = ...;
Duration duration2 = duration.plus(Duration.ofMinutes(30));
plusMinutes metodu
Şöyle yaparız.
String[] parts = durationAsString.split(":");
Duration duration = Duration
    .ofHours(1)
    .plusMinutes(2)
    .plusSeconds(3);
toNanos metodu
Şöyle yaparız.
Duration duration = ...;
long conversion = duration.toNanos();
toString metodu
HMS formatında çıktı verir. Şöyle yaparız.
System.out.println(Duration.of(1512431637067L, ChronoUnit.MILLIS));
// output: PT420119H53M57.067S


Hiç yorum yok:

Yorum Gönder