MySQL関数NOW()
と同じフォーマットで日付と時刻を返すPHP関数はありますか?
私はdate()
を使ってそれをする方法を知っています、しかし、私はこれだけのための機能があるかどうか尋ねています。
例えばを返すために:
2009-12-01 00:00:00
他にはありません:
date("Y-m-d H:i:s");
date('Y-m-d H:i:s')
詳細はこちらをご覧ください。 http://pl.php.net/manual/en/function.date.php
PHP version> = 5.4 DateTimeの場合 これを行うことができます -
echo (new \DateTime())->format('Y-m-d H:i:s');
この機能を使う:
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');
}
これを試して:
date("Y-m-d H:i:s");
私は同じ答えを探していました、そして私は _ php _ 5.3以降のためにこの解決策を思いつきました:
$dtz = new DateTimeZone("Europe/Madrid"); //Your timezone
$now = new DateTime(date("Y-m-d"), $dtz);
echo $now->format("Y-m-d H:i:s");
MySQL関数NOW()
は現在のタイムスタンプを返します。私がPHPに見つけた唯一の方法は、次のコードを使うことです。
$curr_timestamp = date('Y-m-d H:i:s');
私が使いやすいと思うもう一つの答え:
echo date('c');
// 2015-07-27T00:00:00+02:00
これは、ISO 8601日付(PHP 5に追加)MySQLが使用する日付です
MySQL 5.7では、デフォルトで日時のタイムゾーンが許可されていません。 SQL_MODE=ALLOW_INVALID_DATES
でエラーを無効にできます。詳細については、こちらの回答をご覧ください:https://stackoverflow.com/a/35944059/2103434。 しかし、それはまた、データベースに保存するときにタイムゾーンが失われることを意味します!
デフォルトでは、MySQLはシステムのタイムゾーンを使用し、PHPが同じタイムゾーンを使用している限り大丈夫です。私の場合、CET/UTC + 2。
つまり、2015-07-27T00:00:00+02:00
をデータベースに挿入すると、2015-07-27T00:00:00
のみが格納されます(ただし、これは正しい現地時間です!)。
時間をPHPに戻すと、
$importedDate = new \DateTime('2015-07-27T00:00:00')
デフォルトであるため、+02:00
タイムゾーンであると自動的に想定します。これを印刷すると、再び正しくなります。
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
または DateTime
定数 :を使用することもできます。
echo date(DateTime::W3C); // 2005-08-15T15:52:01+00:00
これがそれらのリストです:
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
デバッグにはもっと短いほうがいいです( 3v4l.org ):
echo date('ymd\THisP'); // 180614T120708+02:00
私はuser1786647によって投稿された解決策が好きです、私はタイムゾーンを関数の引数に変更し、返された日付スタンプに使用するためにUnix時間または日時文字列を渡すためのオプションのサポートを追加しました。
PHP 5.3より前のバージョンを実行しているユーザーのための "setTimestamp"の代替も含まれます。
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");
}
あなたはパラメータとして正しいフォーマットでphp date関数を使うことができます、
echo date("Y-m-d H:i:s");
組み込みのPHP now()
関数はありませんが、date()
を使用して実行できます。
例
function now() {
return date('Y-m-d H:i:s');
}
タイムゾーンを変更する必要がある場合は、date_default_timezone_set()
を使用できます。
それ以外の場合は、 Carbon -DateTimeの単純なPHP API拡張を使用できます。
PHPに相当するものはtime()
: http://php.net/manual/en/function.time.php です。