Ce face DateTimeFormatter.format
formatter.format(data) face același lucru ca data.format(formatter): transformă valoarea în text. Funcționează cu orice obiect din java.time care are câmpurile cerute de șablon: LocalDate, LocalDateTime, LocalTime, ZonedDateTime.
Dacă șablonul cere un câmp pe care valoarea nu îl are (oră pe un LocalDate, fus orar pe un LocalDateTime), metoda aruncă UnsupportedTemporalTypeException. Un Instant nu are calendar: ca să-l formatezi cu un șablon, atașează fusul orar cu withZone.
Parametri
| Parametru | Descriere |
|---|---|
valoare |
Obiectul de formatat: LocalDate, LocalDateTime, ZonedDateTime etc. |
Ce returnează
Textul formatat (String).
Exemple
Exemplul 1: Același format pentru tipuri diferite
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
DateTimeFormatter doarData = DateTimeFormatter.ofPattern("dd.MM.yyyy");
DateTimeFormatter cuZona = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm z");
System.out.println(doarData.format(LocalDate.of(2026, 10, 19)));
System.out.println(doarData.format(LocalDateTime.of(2026, 10, 19, 14, 30)));
System.out.println(cuZona.format(ZonedDateTime.of(2026, 10, 19, 14, 30, 0, 0, ZoneId.of("Europe/Bucharest"))));
}
}
Rezultat
19.10.2026
19.10.2026
19.10.2026 14:30 EEST
Exemplul 2: Formatarea unui Instant
Fără withZone, formatter-ul nu știe ce oră să afișeze pentru un moment UTC.
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.temporal.UnsupportedTemporalTypeException;
public class Main {
public static void main(String[] args) {
Instant t = Instant.parse("2026-10-19T11:30:00Z");
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
try {
System.out.println(f.format(t));
} catch (UnsupportedTemporalTypeException e) {
System.out.println("Fără zonă: " + e.getMessage());
}
System.out.println("Cu zonă: " + f.withZone(ZoneId.of("Europe/Bucharest")).format(t));
}
}
Rezultat
Fără zonă: Unsupported field: DayOfMonth
Cu zonă: 19.10.2026 14:30
Greșeli frecvente
- Formatezi un
Instantcu un șablon fărăwithZone. AruncăUnsupportedTemporalTypeException.
Comenzi înrudite
DateTimeFormatter: Descrie cum se scrie sau se citește o dată ca text; ofPattern(„dd.MM.yyyy”) creează un format din litere.LocalDate.format: Transformă data într-un text după un șablon, de exemplu dd.MM.yyyy sau „luni, 19 octombrie 2026”.LocalDateTime.format: Scrie data și ora ca text după un șablon, de exemplu „19.10.2026 14:30”.Instant: Un moment exact pe axa timpului, în UTC, măsurat în secunde și nanosecunde de la 1 ianuarie 1970.