Duration.toMinutes în Java

Transformă durata într-un număr total de minute (toMinutes) sau milisecunde (toMillis), tăind restul.

Sintaxă
long toMinutes()
long toMillis()
long toHours()
long toSeconds()      // Java 9
int toMinutesPart()   // Java 9

Ce face Duration.toMinutes

toMinutes() returnează numărul total de minute întregi din durată: pentru 2 ore și 5 minute dă 125. Restul de secunde se pierde (nu se rotunjește). La fel, toMillis() dă totalul de milisecunde, toHours() totalul de ore.

Pentru afișări de tip „2 ore și 5 minute” folosești metodele …Part() (Java 9): toHoursPart(), toMinutesPart() (0-59), toSecondsPart() (0-59), toMillisPart().

toMillis() aruncă ArithmeticException doar pentru durate uriașe (peste 292 de milioane de ani), care nu încap într-un long.

Ce returnează

Un long cu totalul în unitatea cerută (sau int pentru metodele …Part).

Exemple

Exemplul 1: Total față de parte

import java.time.Duration;

public class Main {
    public static void main(String[] args) {
        Duration d = Duration.ofSeconds(7_545);   // 2 ore, 5 minute, 45 secunde
        System.out.println("Durata: " + d);
        System.out.println("toHours:   " + d.toHours());
        System.out.println("toMinutes: " + d.toMinutes());
        System.out.println("toMillis:  " + d.toMillis());
        System.out.println("Afișat: " + d.toHoursPart() + "h " + d.toMinutesPart() + "m " + d.toSecondsPart() + "s");
    }
}

Rezultat

Durata: PT2H5M45S
toHours:   2
toMinutes: 125
toMillis:  7545000
Afișat: 2h 5m 45s

Exemplul 2: Cost pe minut la un apel

Minutele începute se plătesc întregi, deci rotunjim în sus dacă au rămas secunde.

import java.time.Duration;
import java.time.LocalTime;

public class Main {
    public static void main(String[] args) {
        Duration apel = Duration.between(LocalTime.of(10, 2, 10), LocalTime.of(10, 9, 35));
        long minute = apel.toMinutes() + (apel.toSecondsPart() > 0 ? 1 : 0);
        System.out.println("Apelul a durat " + apel.toMinutes() + " min " + apel.toSecondsPart() + " s");
        System.out.println("Minute facturate: " + minute + ", cost: " + minute * 0.25 + " lei");
        System.out.println("În milisecunde: " + apel.toMillis());
    }
}

Rezultat

Apelul a durat 7 min 25 s
Minute facturate: 8, cost: 2.0 lei
În milisecunde: 445000

Greșeli frecvente

  • Te aștepți ca toMinutes() să rotunjească. 4 minute și 59 de secunde dau 4.
  • Combini toHours() cu toMinutes() în același text. Al doilea este totalul, nu restul; folosește toMinutesPart().

Comenzi înrudite

  • Duration: O cantitate de timp exactă, în secunde și nanosecunde (1 oră și 30 de minute); se afișează ca PT1H30M.
  • Duration.between: Calculează timpul exact dintre două momente (ore, minute, secunde); negativ dacă sfârșitul e înaintea startului.
  • Duration.ofMinutes: Creează o durată dintr-un număr de minute (ofMinutes) sau secunde (ofSeconds); 90 de minute devin PT1H30M.
  • Instant.ofEpochSecond: Transformă un timestamp Unix (secunde de la 1970) în Instant; toEpochMilli face drumul invers, în milisecunde.