8 Stimmen

Php, Datumsmanipulation?

Ich bin neu in php. Und ich möchte einige der Datum Manipulation Dinge in PHP wissen.

// Get Current date
$date = date("Y-m-d");

Was ist, wenn ich das aktuelle Datum und ein bestimmtes Datum subtrahieren möchte, z. B. "heute - 26.06.2008"?

  1. Wie zu tun Datum mathematische Manipulation (addieren, minus, multply etc.) in php?

  2. Wenn heute ein Abonnent am 26.06.2009 ein Abonnement abschließt, möchte ich 1 Woche später sein Konto aus meiner Datenbank löschen, wie mache ich das? (Ich verwende mysql)

  3. Was können wir tun, wenn wir das Datum des Benutzers in unserer Datenbank speichern? Zum Beispiel können wir das Datum des Geburtstags des Benutzers speichern, so dass wir ihm an seinem Geburtstag eine E-Mail schicken können. Was kann das Datum sonst noch tun?

13voto

Andrew Moore Punkte 90339

Zunächst einmal müssen Sie den Unterschied zwischen dem date() , time() et mktime() .

date() wird nur zu Anzeigezwecken verwendet. Verwenden Sie es niemals für mathematische Manipulationen.

time() gibt die aktuelle timestamp (an int die die aktuelle Uhrzeit und das aktuelle Datum darstellen).

mktime() ohne Parameter ist gleichbedeutend mit time() . Mit Parametern können Sie eine timestamp für eine bestimmte Zeit. Die Parameter sind in dieser Reihenfolge: Stunde, Minute, Sekunde, Monat, Tag, Jahr.

Jetzt, Ihre Fragen :

Frage 1

Um die Zeit zu manipulieren, können Sie Folgendes tun:

$today = mktime(0,0,0); //Today, time neutral
$otherDate = mktime(0, 0, 0, 6, 26, 2008); //2008-06-26, time neutral

$secondsBetweenDates = $today - $otherDate;

Frage 2

Es ist besser, so etwas direkt in Ihrem SQL zu tun. Hier finden Sie Möglichkeiten für die beiden gängigsten Datenbankserver, die in PHP laufen. Ich gehe davon aus DateSubscribed in einem gültigen Datentyp für das Datum ist.

--- MySQL
DELETE FROM `subscribers`
    WHERE NOW() < DATE_ADD(`DateSubscribed`, INTERVAL 1 WEEKS);

--- PostgreSQL
DELETE FROM "subscribers"
    WHERE CURRENT_TIMESTAMP < ("DateSubscribed" + interval '1 week');

Frage 3

Das hängt von Ihrem DBMS ab. Hier sind die Dokumentationsseiten zu den Datum/Zeit-Funktionen für MySQL und PostgreSQL

3voto

James Skidmore Punkte 46884

Q1: Konvertieren Sie zunächst die Daten in Zeitstempel. Dann können Sie mit den Zeitstempeln rechnen und sie wieder in Daten umwandeln. Zum Beispiel:

$num_seconds_between = strtotime('today') - strtotime('2008-06-26');
$num_days_between = $num_seconds_between / 60 / 60 / 24;

Q2: Ermittlung des Datums für die Löschung seines Kontos (im Datenbankformat "Datum/Uhrzeit"):

date('Y-m-d H:i:s', strtotime('+1 week', strtotime('2009-06-26')));

Sie können sie dann auf beliebige Weise löschen. Es klingt, als ob Sie eine Cron-Job .

F3: So ziemlich alles, was Sie brauchen. Wenn du spezielle Fragen zu anderen Fähigkeiten hast, kannst du sie hier stellen. Du kannst dir die PHP-Handbuch für mehr.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X