2011-01-12 5 views
0

Ok, ich speichere ein Date/Time in einem MySQL TEXT Feld. Ich möchte überprüfen können, ob das in der Datenbank gespeicherte Datum mindestens 48 Stunden vom aktuellen Datum/Uhrzeit entfernt ist. Hier ist ein Code:Arbeiten mit Daten in PHP, wie viele Stunden alt ist Datum/Zeitstempel?

<?php 
date_default_timezone_set("America/New_York"); 
$dtformat = "F jS, Y - g:i A"; 

$datetime = date($dtformat); 
?> 

Der Wert von $ Datetime wird MySQL gesendet und in einer Textspalte platziert, würde ich MySQL DATETIME- verwenden, aber die Zeitzone muss anders sein, abhängig von der Benutzer Lage. Also dachte ich, ich würde meinen Zeitstempel in PHP schreiben. Eine Beispielausgabe wäre January 11th, 2011 - 6:24 PM

Wie würde ich das aktuelle Datum/Zeit in PHP nehmen und herausfinden, ob mein timestamp January 11th, 2011 - 6:24 PM atleast 48 Stunden alt ist?

Dank

+6

"Ok, ich bin Speichern eines Datum/Uhrzeit in einer MySQL-TEXT-Feld." --- Oh mein Gott. – zerkms

+0

Sie haben mehr zu tun, wenn Sie keine Daten als "Datum" oder ähnliches speichern. – alex

Antwort

1
<?php 
date_default_timezone_set("America/New_York"); 
$dtformat = "F jS, Y - g:i A"; 

$datetime = date($dtformat); 

$i_datetime = strtotime($datetime); 
$i_48_hours = strtotime('now -48 hours'); 
if ($i_datetime < $i_48_hours) 
{ 
    echo "The date $datetime is older than 48 hours old."; 
} 
?> 
+0

Danke, ich musste das "-" aus meinem Zeitstempel zwischen Datum und Uhrzeit entfernen, damit es funktioniert. aber es hat! An diesem Punkt hätte die Änderung der Datenbank meine Daten ruiniert –

+1

@Mike L .: "hätte meine Daten ruiniert" --- nun, erstellen Sie ein weiteres leeres 'timestamp'-Feld und füllen Sie es mit PHP-Skript. Wenn Sie jetzt Ihr schreckliches Schema nicht ändern, werden Sie es in Zukunft nie mehr tun. – zerkms

1

würde ich MySQL DATETIME- verwenden, aber die Zeitzone muss anders sein, auf der Benutzer Ort“abhängig

so mysql timestamp Datumsart verwenden, ist es für eine solche spezielle entworfen Zwecke.

http://dev.mysql.com/doc/refman/5.1/en/timestamp.html

ich glaube nicht, es irgendeinen Grund gibt, um fortzufahren folgende aktuelle schreckliche Lösung. Schreiben Sie Ihren Code für die Verwendung von timestamp besser neu.

+0

Ich habe dies ursprünglich versucht, es gibt nichts auf der MySQL-Seite, die mögliche Werte für 'SET SESSION time_zone =' kennst du eine solche Liste? –

+0

@Mike L .: http://en.wikipedia.org/wiki/List_of_time_zone_abcreviations hier mindestens, aber Abkürzungen und tz-Namen können Sie nur verwenden, wenn der Administrator die Zeitzonendatenbank importiert hat (es ist ziemlich selten). Ansonsten kannst du einfach den Offset in Stunden angeben 'SET time_zone = '+ 10: 00'' – zerkms

4

Zuerst sollten Sie die Daten und die Uhrzeit im entsprechenden Feld timestamp und nicht ein Textfeld speichern.

Moving on ... Sie die Daten wie folgt vergleichen könnte:

if(strtotime($dateFromDatabase." + 48 hours") <= strtotime("now")) { 
    //It's at least 48 hours old, do your stuff 
} 
+0

' strtotime ("now") 'sieht etwas überkompliziert aus ;-) (ich unterstelle' time()' Stattdessen) – zerkms

+0

Ja, ich habe dich auch aufgestuft, weil du * korrekte * Antwort auf seine Frage gegeben hast, aber trotzdem denke ich, dass es nicht richtig ist, ihm zu helfen, solche seltsamen Dinge zu tun. – zerkms

Verwandte Themen