Ce face LocalDateTime
LocalDateTime combină un LocalDate cu un LocalTime: an, lună, zi, oră, minut, secundă și nanosecunde. Este potrivită pentru o programare la medic, ora unui tren dintr-un orar sau momentul unei comenzi, atunci când fusul orar este subînțeles.
Ca toate clasele din java.time, este imutabilă. toString() afișează formatul ISO cu litera T între dată și oră: 2026-10-19T14:30. Secundele apar doar dacă nu sunt zero.
LocalDateTime.now() citește ceasul sistemului în fusul orar implicit. Pentru că nu are fus orar, un LocalDateTime nu indică un moment unic pe glob: „14:30” la București și la Londra sunt momente diferite. Pentru momente exacte folosește ZonedDateTime sau Instant.
Ce returnează
Un obiect LocalDateTime; now() returnează data și ora curente.
Exemple
Exemplul 1: Momentul curent
Rezultatul depinde de momentul rulării; nanosecundele apar și ele.
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
LocalDateTime acum = LocalDateTime.now();
System.out.println("Acum: " + acum);
System.out.println("Ora: " + acum.getHour() + ", minutul: " + acum.getMinute());
}
}
Rezultat posibil (diferă la fiecare rulare)
Acum: 2026-10-19T14:31:07.482915
Ora: 14, minutul: 31
Exemplul 2: Programări la cabinet
import java.time.LocalDateTime;
import java.util.List;
public class Main {
record Programare(String pacient, LocalDateTime cand) {}
public static void main(String[] args) {
List<Programare> lista = List.of(
new Programare("Ana Ionescu", LocalDateTime.of(2026, 10, 20, 9, 30)),
new Programare("Mihai Pop", LocalDateTime.of(2026, 10, 20, 11, 0)),
new Programare("Elena Rusu", LocalDateTime.of(2026, 10, 21, 8, 15, 30)));
for (Programare p : lista) {
System.out.println(p.cand() + " " + p.pacient() + " (ziua " + p.cand().getDayOfWeek() + ")");
}
}
}
Rezultat
2026-10-20T09:30 Ana Ionescu (ziua TUESDAY)
2026-10-20T11:00 Mihai Pop (ziua TUESDAY)
2026-10-21T08:15:30 Elena Rusu (ziua WEDNESDAY)
Exemplul 3: Dată + oră = LocalDateTime
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
public class Main {
public static void main(String[] args) {
LocalDate zi = LocalDate.of(2026, 12, 31);
LocalTime ora = LocalTime.of(23, 59, 59);
LocalDateTime revelion = zi.atTime(ora);
LocalDateTime altfel = LocalDateTime.of(zi, ora);
System.out.println(revelion);
System.out.println("Același moment? " + revelion.equals(altfel));
System.out.println("O secundă mai târziu: " + revelion.plusSeconds(1));
}
}
Rezultat
2026-12-31T23:59:59
Același moment? true
O secundă mai târziu: 2027-01-01T00:00
Greșeli frecvente
- Salvezi momente din aplicații folosite în mai multe țări ca
LocalDateTime. Fără fus orar nu mai știi când s-a întâmplat exact; foloseșteInstantsauZonedDateTime. - Compari
LocalDateTime.now()cu o valoare fixă într-un test. Testul nu dă mereu același rezultat; foloseștenow(Clock)cu un ceas fix.
Comenzi înrudite
LocalDateTime.of: of creează o dată cu oră din valori; parse citește una dintr-un text (ISO 2026-10-19T14:30 sau un format dat).LocalDateTime.plusHours: Returnează o dată cu oră nouă, mutată cu un număr de ore; trecerea peste miezul nopții schimbă și ziua.LocalDateTime.format: Scrie data și ora ca text după un șablon, de exemplu „19.10.2026 14:30”.LocalDate: Clasa pentru o dată calendaristică fără oră și fără fus orar: an, lună, zi. Obiectele ei nu se pot modifica.LocalTime: Ora din zi fără dată (14:30); se creează cu LocalTime.of(ora, minut) sau LocalTime.parse(„14:30”).ZonedDateTime: Data și ora împreună cu fusul orar (Europe/Bucharest); indică un moment exact și știe de ora de vară.