50 lines
1.2 KiB
PHP
Executable File
50 lines
1.2 KiB
PHP
Executable File
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Document</title>
|
|
</head>
|
|
<body>
|
|
|
|
<?php
|
|
// validate_date.php
|
|
|
|
//ini_set("display_errors", "on");
|
|
|
|
// M A I N
|
|
$date = "29.02.2400";
|
|
if(isValidDate($date)) echo "<p>Datum $date ist <strong>gültig</strong></p>";
|
|
else echo "<p>Datum $date ist <strong>ungültig</strong></p>";
|
|
|
|
|
|
// Functions
|
|
function isLeapYear(int $year): bool {
|
|
return ($year % 4 == 0 && $year % 100 != 0 || $year % 400 == 0);
|
|
}
|
|
|
|
function isValidDate(string $date): bool {
|
|
$date_parts = ["Tag","Monat", "Jahr"];
|
|
$date_array = explode(".", $date);
|
|
|
|
$days_of_month = [31,28,31,30,31,30,31,31,30,31,30,31];
|
|
if(isLeapYear($date_array[2])) {
|
|
$days_of_month[1] = 29;
|
|
}
|
|
|
|
// Monat auf Gültigkeit prüfen
|
|
if($date_array[1] < 1 || $date_array[1] > 12) return false;
|
|
|
|
// Tag auf Gültigkeit prüfen
|
|
if($date_array[0] < 1 || $date_array[0] > $days_of_month[$date_array[1]-1]) return false;
|
|
|
|
// Jahr auf Gültigkeit prüfen
|
|
if($date_array[2] < 0 || $date_array[2] > 3000) return false;
|
|
|
|
// Falls Datum gültig
|
|
return true;
|
|
}
|
|
|
|
?>
|
|
</body>
|
|
</html>
|