Datum in Timestamp umwandeln
Matze
- php
0 wahsaga0 Tobias Kloth0 zimt
Hi,
entweder bin ich grad bisschen blöd oder einfach nur verwirrt *fg*
Ein User gibt im Feld Geburtstag sein B-Day ein (Im Format 09.02.2001)
Wie kann ich dieses Datum in ein Timestamp umwandeln??
Denn ich möchte es als Timestamp in die Datenbank schreiben, damit ist die Arbeit um einiges leichter.
Vielen Dank für Eure Hilfe.
Grüße aus dem kalten Stuttgart
hi,
Wie kann ich dieses Datum in ein Timestamp umwandeln??
mktime(), strtotime(). bei letzterem format beachten.
gruß,
wahsaga
hi,
Wie kann ich dieses Datum in ein Timestamp umwandeln??
mktime(), strtotime(). bei letzterem format beachten.
gruß,
wahsaga
könnt ihr mir da mal ein beispiel machen? also ein beispiel script...
irgendwie krieg ich das nich auf die reihe...
in $datum steht das datum (im format z.b. 01.01.2001)
$time = mktime(...???
hi,
könnt ihr mir da mal ein beispiel machen? also ein beispiel script...
irgendwie krieg ich das nich auf die reihe...
*seufz* die ewige leier ... "kannichnich, brauchwasfertiges".
in $datum steht das datum (im format z.b. 01.01.2001)
$time = mktime(...???
Tobias hatte dir noch explode() vrogeschlagen.
gruß,
wahsaga
Hallo Matze,
Ein User gibt im Feld Geburtstag sein B-Day ein (Im Format 09.02.2001)
Wie kann ich dieses Datum in ein Timestamp umwandeln??
explode() und mktime() sollten helfen.
Denn ich möchte es als Timestamp in die Datenbank schreiben,
aber in eine Spalte mit einem Datumstype, oder?
Grüße aus Nürnberg
Tobias
Ein User gibt im Feld Geburtstag sein B-Day ein (Im Format 09.02.2001)
Wie kann ich dieses Datum in ein Timestamp umwandeln??
Denn ich möchte es als Timestamp in die Datenbank schreiben, damit ist die Arbeit um einiges leichter.
Unix-Timestamps sind nur möglich für Daten ab 1.1.1970. Schlecht bei Geburtstagen, denke ich...
Ich würde für die Tabelle in der DB sowieso eher eine DATE-Spalte empfehlen. Also CREATE TABLE xyz( ..., Datum DATE, ... )
Das Verarbeiten der User-Eingabe ist nicht ganz ohne, weil es keine Funktion gibt, die ein Datum in diesem Format überprüft und liest. Also z.B. folgende Funktion selbst definieren:
---------------------------------------------------------------------------------------
// Die Funktion gibt bei fehlerhaftem Datum false, anonsten MySQL-
// formatierten Datums-String zurück ( YYYY-MM-DD )
function datum_de2sql( $datum )
{
// 'explode()' gibt ein Array aus Teilstrings zurück. Jeder String im Array
// ist ein Teil des übergebenen Strings (zweiter Parameter), für das
// 'Zerstückeln' sucht 'explode()' nach dem Trennzeichen, das als erster
// Parameter angegeben wird.
$teile = explode( '.', $datum );
// Test ob drei durch Punkt getrennte Bestandteile in der Datumsangabe
// waren (auch wenn das Jahr weggelassen wurde, steht nach dem Monat ein
// Punkt und es gibt somit einen Leerstring als dritten Bestandteil)
if( sizeof( $teile ) != 3 ) return( false );
// Wenn Jahr nicht angegeben -> aktuelles Jahr holen
if( $teile[2] == '' ) $teile[2] = date( 'Y' );
// Wenn Jahr kleiner 100 -> 2000 dazu addieren
else if( $teile[2] < 100 ) $teile[2] += 2000;
// Überprüfen, ob Datum existiert. 'checkdate()' bekommt (in dieser
// Reihenfolge) Monat, Tag und Jahr übergeben und liefert true, wenn
// das Datum ok ist oder sonst false (es wird auch der Februar abhängig
// von Schaltjahren geprüft).
if( !checkdate( $teile[1], $teile[0], $teile[2] ) ) return( false );
// Konstruieren des Datums-Strings im MySQL-Format und Rückgabe dieses Strings
return( sprintf( '%d-%02d-%02d', $teile[2], $teile[1], $teile[0] ) );
}
---------------------------------------------------------------------------------------
Wenn es unbedingt ein Timestamp sein muss, müsste die letzte Zeile der Funktion so aussehen:
---------------------------------------------------------------------------------------
// mktime() generiert einen Unix-Timestamp aus Stunde, Minute, Sekundem, Monat, Tag, Jahr
return( mktime( 0, 0, 0, $teile[1], $teile[0], $teile[2] ) );
---------------------------------------------------------------------------------------
Aufruf dann z.B. so:
---------------------------------------------------------------------------------------
$eingabe = '11.02.1769';
$sql_datum = datum_de2sql( $eingabe );
if( !$sql_datum ) die( 'Datum nicht korrekt!' );
mysql_query( "INSERT INTO xyz( Datum ) VALUES( '$sql_datum' )" );
---------------------------------------------------------------------------------------