Hier sind Funktionen zu finden, die das Datum mit PHP ändern, aufbereiten oder einfach nur als kleine Ergänzung oder Hilfestellung dienen.
Wochentag
Die nachfolgende Funktion gibt zu einem Datum den entsprechenden Wochentag zurück.
<?php
function wochentag ($datum)
{ // returns weekday of date
if ($datum == '')
{ return ''; }
else
{
$timestamp = mktime(0,0,0,substr($datum, 3, 2), substr($datum, 0, 2), substr($datum, 6, 4));
$tage = array("So","Mo","Di","Mi","Do","Fr","Sa");
return $tage[date("w",$timestamp)]." ".$datum;
}
}
/*** END FUNCTION wochentag () ***********************************************/
?>
Erklärung
- Als erstes wird überprüft, ob überhaupt ein Datum oder generell was übergeben wurde. Das kann man mit $datum=='' (einfach Anführungszeichen) feststellen. Falls kein Datum übergeben wurde, wird die Funktion beendet und eine leere Zeichenkette zurück übergeben.
- Als nächstes wird ein Timestamp erzeugt. Dieses geschieht mit dem PHP-Befehl mktime Die Reihenfolge der zu übergebenen Werte sind Stunde, Minute, Sekunde, Monat, Tag, Jahr. Da wir für die Ermittelung des Wochentages nur das Datum benötigen und die Zeit nebensächlich ist, übergeben wir für Stunde, Minute und Sekeunde jeweils die "0". Für Tag, Monat und das Jahr übergeben wir die entsprechenden Werte aus dem übergebenen String. Da nicht das Datum komplett angegeben werden kann, nutzen wir substr($String, Startposition im String, Anzahl Zeichen aus dem String). Bitte beachten, da das erste Zeichen im String die Position 0 hat.
- Das Array $tage liefert nachher den entsprechenden Text für den Wochentag. Dieser kann entsprechend geändert werden. So kann aus So Sonntag oder Sunday gemacht werden.
- Mit der Funktion date kann nun der Wochentag bestimmt werden. date("w", $timestamp) liefert eine Zahl zwischen 0 (für Sonntag) und 6 (für Samstag) zurück. In das Array $tage[''] wird nun die Zahl aus date eingegeben und so erhalten wir den Wochentag.
- Mit ." ".$datum wird an dem Wochentag (aus dem Array $tage) ein Leerzeichen und das übergebene Datum wieder zurückübergeben.
W I C H T I G
Das Datum muss in folgendem Format übergeben werden: 28.05.2011. Für die Überprüfung des Datums werde ich noch ein Script veröffentlichen.
Datum in der Zukunft?
Für ein Modul, welches ich für WebsiteBaker z.Z. entwickel, musste ich wissen, ob ein eingegebenes Datum in der Zukunft liegt. Mit der nachfolgenden Funktion kann das überprüft werden.
<?php
function datum_zukunft ($datum)
{
/***
**** checks if the date is in the future
**** returns nothing if date isn't in the future
***/
if (mktime(24, 0, 0, substr($datum, 3, 2), substr($datum, 0, 2), substr($datum, 6, 4)) >= time())
{return $datum; }
else
{ return ''; }
} /*** END FUNCTION datum_zukunft () *****************************************/
?>
Datum setzen
Mit der nachfolgenden Funktion datum_setzen($datum) kann man ein Datum aus einem Eingabefeld überprüfen und entsprechend ergänzen.
Möglich sind folgende Eingaben für das Datum:
11.11.2011
- 111111
- 11112011
- 11,11,11
- 11,11,2011
- 11/11/11
- 11/11/2011
- 11.11.11
- 11.11.2011
Das Datum was vom Skript zurück übergeben wird hat dann folgendes Format:
11.11.2011
<?php
function datum_setzen ($datum)
{
/***
**** setting date to the right format, if an input was made like
**** 10511 or 01052011, and check if the date is in the future
**** return nothing if the date isn't in the future
***/
switch (strlen($datum))
{
case '6':
$tmp = substr($datum, 0, 2).".".substr($datum, 2, 2).".20".substr($datum, 4, 2);
if (checkdate (substr($tmp, 3, 2), substr($tmp, 0, 2), substr($tmp, 6, 4)))
{
if (datum_zukunft ($tmp))
{ return $tmp; }
}
break;
case '8':
$trenner = substr($datum, 2, 1);
if ($trenner == '.' || $trenner == '/' || $trenner == ',')
{ $tmp = substr($datum, 0, 2) . "." . substr($datum, 3, 2) . ".20" . substr($datum, 6, 2); }
else
{ $tmp = substr($datum, 0, 2).".".substr($datum, 2, 2).".".substr($datum, 4, 4); }
if (checkdate (substr($tmp, 3, 2), substr($tmp, 0, 2), substr($tmp, 6, 4)))
{
if (datum_zukunft ($tmp))
{ return $tmp; }
}
break;
case '10':
$tmp = substr($datum, 0, 2).".".substr($datum, 3, 2).".".substr($datum, 6, 4);
if (checkdate (substr($tmp, 3, 2), substr($tmp, 0, 2), substr($tmp, 6, 4)))
{
if (datum_zukunft ($tmp))
{ return $tmp; }
}
break;
} // end switch
} /*** end function datum_setzen () ******************************************/
?>



![Validate my RSS feed [Valid RSS]](http://michael-weyers.de/templates/mint/img/valid-rss.png)