Signatur
Beschreibung
datefmt_is_lenient() ist die prozedurale Variante der Methode IntlDateFormatter::isLenient(). Sie prüft, ob der Formatter im sogenannten lenient (nachsichtigen) Modus betrieben wird.
Im nachsichtigen Modus akzeptiert der IntlDateFormatter auch mehrdeutige oder leicht fehlerhafte Datums- und Zeitangaben, beispielsweise den 32. Januar, der dann automatisch als 1. Februar interpretiert wird. Im strikten Modus (lenient = false) hingegen werden solche Eingaben als ungültig abgelehnt.
Diese Funktion ist nützlich, um den aktuellen Zustand eines Formatters zu ermitteln, bevor man ihn möglicherweise mit datefmt_set_lenient() ändert oder bevor man kritische Datumswerte parst, bei denen Fehlertoleranz unerwünscht ist.
Standardmäßig ist ein neu erstellter IntlDateFormatter im nachsichtigen Modus (true).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $formatter Pflicht | IntlDateFormatter | Das IntlDateFormatter-Objekt, dessen Nachsichtigkeit abgefragt werden soll. |
Rückgabewert
true zurück, wenn der Formatter im nachsichtigen Modus arbeitet, andernfalls false.Beispiele
Nachsichtigkeit eines Formatters prüfen
<?php
$fmt = datefmt_create(
'de_DE',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'Europe/Berlin',
IntlDateFormatter::GREGORIAN
);
// Standardmäßig ist der Formatter nachsichtig
var_dump(datefmt_is_lenient($fmt));
// Auf strikten Modus umschalten
datefmt_set_lenient($fmt, false);
var_dump(datefmt_is_lenient($fmt));
Nachsichtigkeit vor dem Parsen prüfen und ggf. deaktivieren
<?php
$fmt = datefmt_create(
'de_DE',
IntlDateFormatter::SHORT,
IntlDateFormatter::NONE,
'Europe/Berlin',
IntlDateFormatter::GREGORIAN
);
// Sicherstellung: striktes Parsen verwenden
if (datefmt_is_lenient($fmt)) {
datefmt_set_lenient($fmt, false);
echo "Lenient-Modus wurde deaktiviert.\n";
}
// Nun werden ungültige Daten wie '32.01.2024' abgelehnt
$timestamp = datefmt_parse($fmt, '32.01.2024');
if ($timestamp === false) {
echo "Ungültiges Datum abgelehnt: " . datefmt_get_error_message($fmt) . "\n";
} else {
echo "Parsed: " . date('Y-m-d', $timestamp) . "\n";
}
// Wichtig · Fallstricke
Vorsicht beim Parsen von Benutzereingaben: Der standardmäßig aktive nachsichtige Modus kann dazu führen, dass scheinbar ungültige Datumsangaben stillschweigend uminterpretiert werden (z. B. wird der 40. März zum 9. April). Für sicherheitskritische oder validierungsintensive Anwendungen sollte der Modus mit datefmt_set_lenient($fmt, false) deaktiviert werden.
Die objektorientierte Entsprechung ist IntlDateFormatter::isLenient().