it-swarm.com.de

NOW () Funktion in PHP

Gibt es eine PHP -Funktion, die Datum und Uhrzeit im selben Format wie die MySQL-Funktion NOW() zurückgibt?

Ich weiß, wie man es mit date() macht, aber ich frage, ob es nur eine Funktion dafür gibt.

Zum Beispiel, um zurückzukehren:

2009-12-01 00:00:00
451
MoeAmine

Nicht außer:

date("Y-m-d H:i:s");
952
troelskn
date('Y-m-d H:i:s')

Weitere Informationen finden Sie hier: http://pl.php.net/manual/en/function.date.php

137
hsz

Mit PHP version> = 5.4 DateTime können Sie dies tun: -

echo (new \DateTime())->format('Y-m-d H:i:s');

Siehe es funktioniert .

106
vascowhite

Verwenden Sie diese Funktion:

function getDatetimeNow() {
    $tz_object = new DateTimeZone('Brazil/East');
    //date_default_timezone_set('Brazil/East');

    $datetime = new DateTime();
    $datetime->setTimezone($tz_object);
    return $datetime->format('Y\-m\-d\ h:i:s');
}
33
user1786647

Versuche dies:

date("Y-m-d H:i:s");
24
streetparade

Ich habe nach der gleichen Antwort gesucht und mir diese Lösung für PHP 5.3 oder höher ausgedacht:

$dtz = new DateTimeZone("Europe/Madrid"); //Your timezone
$now = new DateTime(date("Y-m-d"), $dtz);
echo $now->format("Y-m-d H:i:s");
15
santi

Die MySQL-Funktion NOW() gibt den aktuellen Zeitstempel zurück. Die einzige Möglichkeit, die ich für PHP gefunden habe, ist die Verwendung des folgenden Codes.

$curr_timestamp = date('Y-m-d H:i:s');
15

Verwenden Sie strftime :

strftime("%F %T");
  • %F ist dasselbe wie %Y-%m-%d.

  • %T ist dasselbe wie %H:%M:%S.

Hier ist eine Demo auf ideone.

14
user669677

Eine weitere Antwort finde ich einfach zu bedienen:

echo date('c');

// 2015-07-27T00:00:00+02:00

Dies ist das ISO 8601-Datum (hinzugefügt in PHP 5) , das MySQL verwendet

Bearbeiten

MySQL 5.7 erlaubt standardmäßig keine Zeitzone in der Datums-/Uhrzeit-Zeit. Sie können den Fehler mit SQL_MODE=ALLOW_INVALID_DATES deaktivieren. Weitere Informationen finden Sie in der Antwort hier: https://stackoverflow.com/a/35944059/2103434. Das bedeutet aber auch, dass die Zeitzone beim Speichern in der Datenbank verloren geht!

Standardmäßig verwendet MySQL die Zeitzone des Systems, und solange PHP dieselbe Zeitzone verwendet , sollten Sie in Ordnung sein. In meinem Fall MEZ/UTC + 2.

Das heißt, wenn ich 2015-07-27T00:00:00+02:00 in die Datenbank einfüge, wird nur 2015-07-27T00:00:00 gespeichert (aber das ist die richtige Ortszeit!).

Wenn ich die Zeit wieder in PHP lade,

$importedDate = new \DateTime('2015-07-27T00:00:00')

es wird automatisch davon ausgegangen, dass es sich um die +02:00 -Zeitzone handelt, da dies die Standardeinstellung ist. Das Drucken wird wieder korrekt sein:

echo $importedDate->format('c');
// 2015-07-27T00:00:00+02:00

Verwenden Sie aus Sicherheitsgründen immer UTC auf dem Server, geben Sie es in MySQL und PHP an und konvertieren Sie es dann nur in das Gebietsschema Ihres Benutzers, wenn Sie das Datum anzeigen:

date_default_timezone_set('UTC');
$importedDate = new \DateTime('2015-07-27T00:00:00+02:00');
echo $importedDate->format('c');
// 2015-07-27T00:00:00+02:00

$importedDate->setTimezone(new \DateTimeZone("America/New_York"));
echo $importedDate->format('c');
// 2015-07-26T18:00:00-04:00
14
Richard87

Oder Sie können DateTime Konstanten verwenden:

echo date(DateTime::W3C); // 2005-08-15T15:52:01+00:00

Hier ist die Liste von ihnen:

ATOM = "Y-m-d\TH:i:sP" ;               // -> 2005-08-15T15:52:01+00:00
COOKIE = "l, d-M-Y H:i:s T" ;          // -> Monday, 15-Aug-2005 15:52:01 UTC
ISO8601 = "Y-m-d\TH:i:sO" ;            // -> 2005-08-15T15:52:01+0000
RFC822 = "D, d M y H:i:s O" ;          // -> Mon, 15 Aug 05 15:52:01 +0000
RFC850 = "l, d-M-y H:i:s T" ;          // -> Monday, 15-Aug-05 15:52:01 UTC
RFC1036 = "D, d M y H:i:s O" ;         // -> Mon, 15 Aug 05 15:52:01 +0000
RFC1123 = "D, d M Y H:i:s O" ;         // -> Mon, 15 Aug 2005 15:52:01 +0000
RFC2822 = "D, d M Y H:i:s O" ;         // -> Mon, 15 Aug 2005 15:52:01 +0000
RFC3339 = "Y-m-d\TH:i:sP" ;            // -> 2005-08-15T15:52:01+00:00 ( == ATOM)
RFC3339_EXTENDED = "Y-m-d\TH:i:s.vP" ; // -> 2005-08-15T15:52:01.000+00:00
RSS = "D, d M Y H:i:s O" ;             // -> Mon, 15 Aug 2005 15:52:01 +0000
W3C = "Y-m-d\TH:i:sP" ;                // -> 2005-08-15T15:52:01+00:00

Zum Debuggen bevorzuge ich allerdings eine kürzere ( v4l.org ):

echo date('ymd\THisP'); // 180614T120708+02:00
11
CPHPython

Ich mag die von user1786647 veröffentlichte Lösung und habe sie ein wenig aktualisiert, um die Zeitzone in ein Funktionsargument zu ändern und eine optionale Unterstützung für die Übergabe einer Unix-Zeit- oder einer datetime-Zeichenfolge für den zurückgegebenen Datenstempel hinzuzufügen.

Es enthält auch einen Fallback für "setTimestamp" für Benutzer, die eine niedrigere Version als PHP 5.3 ausführen:

function DateStamp($strDateTime = null, $strTimeZone = "Europe/London") {
    $objTimeZone = new DateTimeZone($strTimeZone);

    $objDateTime = new DateTime();
    $objDateTime->setTimezone($objTimeZone);

    if (!empty($strDateTime)) {
        $fltUnixTime = (is_string($strDateTime)) ? strtotime($strDateTime) : $strDateTime;

        if (method_exists($objDateTime, "setTimestamp")) {
            $objDateTime->setTimestamp($fltUnixTime);
        }
        else {
            $arrDate = getdate($fltUnixTime);
            $objDateTime->setDate($arrDate['year'], $arrDate['mon'], $arrDate['mday']);
            $objDateTime->setTime($arrDate['hours'], $arrDate['minutes'], $arrDate['seconds']);
        }
    }
    return $objDateTime->format("Y-m-d H:i:s");
}
5
Seth

Sie können die Datumsfunktion PHP mit dem richtigen Format als Parameter verwenden.

echo date("Y-m-d H:i:s");
5
Som

Es gibt keine eingebaute Funktion PHP now(), aber Sie können dies mit der Funktion date() tun.

Beispiel

function now() {
    return date('Y-m-d H:i:s');
}

Sie können date_default_timezone_set() verwenden, wenn Sie die Zeitzone ändern müssen.

Andernfalls können Sie Carbon - Eine einfache PHP API-Erweiterung für DateTime verwenden.

0
RAZIUL

Das PHP Äquivalent ist time(): http://php.net/manual/en/function.time.php

0
Marco Marsala