Ce face LocalDateTime.truncatedTo
truncatedTo pune la zero toate câmpurile mai mici decât unitatea aleasă. Cu ChronoUnit.MINUTES dispar secundele și nanosecundele; cu ChronoUnit.HOURS dispar și minutele; cu ChronoUnit.DAYS rămâne miezul nopții zilei respective.
Este des folosită ca să elimini nanosecundele din LocalDateTime.now() înainte de afișare sau salvare, ori ca să grupezi evenimente pe ore. Nu rotunjește: 14:59 trunchiat la ore devine 14:00, nu 15:00.
Unități mai mari decât o zi (MONTHS, YEARS) nu sunt acceptate și aruncă UnsupportedTemporalTypeException. Pentru „începutul lunii” folosește withDayOfMonth(1).
Parametri
| Parametru | Descriere |
|---|---|
unitate |
De obicei o valoare ChronoUnit: SECONDS, MINUTES, HOURS, DAYS. |
Ce returnează
Un LocalDateTime nou, trunchiat.
Exemple
Exemplul 1: Trunchiere la diferite unități
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
public class Main {
public static void main(String[] args) {
LocalDateTime t = LocalDateTime.of(2026, 10, 19, 14, 37, 52, 123_456_789);
System.out.println("Original: " + t);
System.out.println("SECONDS: " + t.truncatedTo(ChronoUnit.SECONDS));
System.out.println("MINUTES: " + t.truncatedTo(ChronoUnit.MINUTES));
System.out.println("HOURS: " + t.truncatedTo(ChronoUnit.HOURS));
System.out.println("DAYS: " + t.truncatedTo(ChronoUnit.DAYS));
}
}
Rezultat
Original: 2026-10-19T14:37:52.123456789
SECONDS: 2026-10-19T14:37:52
MINUTES: 2026-10-19T14:37
HOURS: 2026-10-19T14:00
DAYS: 2026-10-19T00:00
Exemplul 2: Vizite pe site grupate pe ore
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Map;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
String[] vizite = {"2026-10-19T09:05:11", "2026-10-19T09:48:30", "2026-10-19T10:01:02",
"2026-10-19T10:59:59", "2026-10-19T11:30:00"};
Map<LocalDateTime, Integer> peOre = new TreeMap<>();
for (String v : vizite) {
peOre.merge(LocalDateTime.parse(v).truncatedTo(ChronoUnit.HOURS), 1, Integer::sum);
}
peOre.forEach((ora, nr) -> System.out.println(ora.toLocalTime() + " -> " + nr + (nr == 1 ? " vizită" : " vizite")));
}
}
Rezultat
09:00 -> 2 vizite
10:00 -> 2 vizite
11:00 -> 1 vizită
Greșeli frecvente
- Te aștepți la rotunjire.
truncatedTodoar taie: 10:59:59 devine 10:00. - Încerci
truncatedTo(ChronoUnit.MONTHS). Aruncă excepție; foloseștewithDayOfMonth(1).truncatedTo(ChronoUnit.DAYS).
Comenzi înrudite
ChronoUnit: Enumerarea unităților de timp (DAYS, MONTHS, HOURS…); ChronoUnit.DAYS.between(a, b) numără zilele dintre două date.LocalDateTime.toLocalDate: Extrage doar data (fără oră) dintr-un LocalDateTime; toLocalTime extrage doar ora.LocalDateTime: Data și ora împreună (2026-10-19T14:30), fără fus orar. LocalDateTime.now() dă momentul curent după ceasul local.Instant: Un moment exact pe axa timpului, în UTC, măsurat în secunde și nanosecunde de la 1 ianuarie 1970.