DateTimeFormatter.format în Java

Scrie o dată, o oră sau un moment ca text, după formatul acestui DateTimeFormatter.

Sintaxă
String format(TemporalAccessor valoare)

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 Instant cu 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.