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
Nicht außer:
date("Y-m-d H:i:s");
date('Y-m-d H:i:s')
Weitere Informationen finden Sie hier: http://pl.php.net/manual/en/function.date.php
Mit PHP version> = 5.4 DateTime können Sie dies tun: -
echo (new \DateTime())->format('Y-m-d H:i:s');
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');
}
Versuche dies:
date("Y-m-d H:i:s");
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");
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');
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
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
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
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
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");
}
Sie können die Datumsfunktion PHP mit dem richtigen Format als Parameter verwenden.
echo date("Y-m-d H:i:s");
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.
Das PHP Äquivalent ist time()
: http://php.net/manual/en/function.time.php