Frage

Ich habe eine MySQL-Tabelle, die auf der Unix-Epoche Zeitstempel Äquivalent zum Zeitpunkt der Eintragung in den verschiedenen Teilen der Website zu sortieren und Filter beruht. Ich versuche, eine Datumsauswahl zu implementieren, die das Datum in das Formularfeld in dem mm / tt / Format eingeben werden. Ich habe zu kämpfen mit diesem Datum in das Format UNIX-Epoche Umwandlung diesen Eintrag in der Zeile Feld hinzuzufügen. Alle Versuche, die ich gemacht habe haben dazu geführt, den aktuellen Tag Epoche Zeitstempel zu generieren. Hat jemand eine Idee, wie ich das Datumsformat nehmen und in der es äquivalent Epoche Zeitstempel umwandeln?

Vielen Dank im Voraus.

Weitere Informationen:

Ich habe versucht, mktime, und alles, was ich bekomme, ist die heutige Zeit. Entschuldige bitte, ich hätte etwas Code hinzugefügt haben, um besser zu erklären:

Die Formular-ID ist "date" Das Datenbankfeld "Epoche"

Hier ist, was ich versuche, (erfolglos), wenn ich die für Datum eingeben:

$epochhold = ($_POST['date']);
$epoch = mktime(0,0,0,$epochhold);

ich von einem frühen Post verstehe, dass dies immer noch den Wert als mm / tt / vorlegen werden und nicht mm, dd, yyyy als Mktime erwartet, aber die Post nicht bieten und Auflösung, wie das zu tun. Ich versuchte, ein str_replace die „/“ auf „“ zu ändern, und das yeilded das gleiche Ergebnis - die heutigen Epoche Datum immer unabhängig vom Datum eingegeben

.

Hier ist das Codebeispiel - auch diese nicht funktionieren, aber ich hinzufügen, es veranschaulicht zu helfen, was ich versucht habe,

$epochhold = ($_POST['date']);
$epochold2 = str_replace('/', ', ', $epochhold)
$epoch = mktime(0,0,0,$epochhold2);

Danke für die vorherige Antwort als gut, ich habe nicht die schnelle Antwort will unbemerkt gehen!

Danke an alle!

Vielen Dank an alle für die Antworten - strtotime scheint am besten auf den ersten Tests zu arbeiten und kann der Weg zu gehen, da dieses Format der gesamten Website konsistent ist. Aber alle Vorschläge half mit diesem ein paar andere Dinge alle gut so danke euch allen wieder!

War es hilfreich?

Lösung

Wenn Sie wissen, dass es immer in diesem Format sein wird, wird strtotime es konvertiert direkt in den Unix-Zeitstempel.

strtotime($_POST['app_date']);

HTH!

Andere Tipps

Sie auf der mktime () Funktion. Paar, das entweder mit regulären Ausdrücken oder strtotime () , und Sie werden es haben.

if ( ! preg_match('#\d{2}/\d{2}/\d{4}#', $_POST['date']) ) {
    // complain about invalid input
}

list($m, $d, $y) = explode('/', $_POST['date']);
$timestamp = mktime(0, 0, 0, $m, $d, $y);

Du wird muß die dd, mm, jjjj als separater Vars schicken mktime. Es nimmt den Wert in $ epochold2 als eine Zeichenfolge, die für Mktime ungültig sein würde.

Ihre beste Wette wäre, die strtotime zu verwenden, wie ich bereits erwähnt, oder zu folgen Ant P Rat mit mktime.

strtotime () fast jedes Datumsformat analysieren wird und den Unix-Zeitstempel zurück. Alles, was Sie tun müssen, ist es Ihre Zeit / Datum-String übergeben:

$unix_time = strtotime($_POST['date']);
if($unix_time < 0) {
    //error case
}
else {
    //value OK!
}

Wie Sie oben sehen können, dass Sie es helfen Eingabe verwenden können, um zu validieren -. Wenn ein Benutzer ein Datum wie 2008.02.31 betritt, wird sie -1 zurück

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top