2016-06-29 9 views
0

Um sehr kurz zu sein, versuche ich, einen Zeitstempel eines bestimmten Tages (der Anfang des Monats) zu einer sehr spezifischen Zeit zu erhalten (00:00:00). Ich versuche dann, diesen Wert in einen Unix-Zeitstempel zu bekommen, um die Datenbank zu durchsuchen. Der Tag funktioniert gut, aber wenn ich den Zeitstempel überprüfe, stellt er sich auf eine relative Zeit zur aktuellen Zeit ein. Zum Beispiel ist es jetzt 8:55 Uhr hier und die Ausgabe, die ich erhalte, ist 1:56 Uhr (UTC). Ich möchte 00:00 UTC. Hier ist der Code, mit dem ich arbeite.Versucht, die Stunde 00:00:00 eines bestimmten Tages zu bekommen, relative Zeit stattdessen zu erhalten

$from = "$month/1/$year"; 
$to = $month+1."/1/$year"; 
$fromDate = date_create("$from"); 
$toDate = date_create("$to"); 
$fromDate->setTime(0,0,0); 
$toDate->setTime(0,0,0); 
$from = strtotime($fromDate); 
$to = strtotime($toDate); 

hier ist der Ausgang:

$ from = 1464789100

zu $ ​​= 1467381099

edit: gelöst

Meine Tabellen wurden durcheinander. Ich hatte einige vermasselte Daten, die alles wegwarfen, was ich zugegebenermaßen zu Testzwecken verursacht hatte (weil es immer eine gute Idee ist, zu vergessen, dass Ihre Testfälle existieren). Vielen Dank für Ihre Hilfe.

+0

haben Sie versucht, '$ from = "$ month/1/$ year 00:00:00";'? –

+0

Ja. Immer noch das gleiche Problem. Ich bekomme 14.06 Uhr (weil die Zeit verstrichen ist; die Zeit setzt sich nicht statisch, sondern setzt sie dynamisch basierend auf der aktuellen Zeit). – dmcoding

Antwort

1

Versuchen Sie diesen Code

$date = DateTime::createFromFormat('m/d/Y H:i:s', '05/02/2015 00:00:00'); 
var_dump($date->format('U')); 
/* Add 1 month to date */ 
$date->add(new DateInterval('P1M')); 
var_dump($date->format('U')); 
+0

Ich habe Ihren Vorschlag versucht, endete mit dem gleichen Ergebnis. Nachdem ich mit strtotime() in einen Unix-Timestamp konvertiert wurde, bekomme ich an diesem Tag immer noch dynamische Zeit anstatt einer statischen 00:00:00, also hat deine Antwort leider nicht funktioniert. – dmcoding

+1

@dmcoding '$ date-> format ('U');' ist das Rückgabedatum im Unix-Timesamp-Format. Sie müssen die zusätzliche Funktion 'strtotime()' nicht verwenden – newage

+0

Dies gibt tatsächlich eine statische Zeit. Ich schätze es sehr. Antwort akzeptiert, ich bearbeite meine Frage mit Ihrer Antwort. Ich wusste nicht, dass das Verwenden von 'strtotime()' alles so sehr vermasseln würde. Ich danke dir sehr. – dmcoding