it-roy-ru.com

Функция NOW () в PHP

Существует ли функция PHP, которая возвращает дату и время в том же формате, что и функция MySQL NOW()?

Я знаю, как это сделать, используя date(), но я спрашиваю, есть ли функция только для этого.

Например, чтобы вернуть:

2009-12-01 00:00:00
439
MoeAmine

Кроме того:

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

Смотрите здесь для получения дополнительной информации: http://pl.php.net/manual/en/function.date.php

132
hsz

С PHP версия> = 5.4 DateTime можно сделать это: -

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

вижу это работает .

104
vascowhite

Используйте эту функцию:

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');
}
32
user1786647

Попробуй это:

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

Я искал тот же ответ, и я нашел это решение для 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");
15
santi

Функция MySQL NOW() возвращает текущую метку времени. Единственный способ, который я нашел для PHP, - использовать следующий код.

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

Используйте strftime :

strftime("%F %T");
  • %F совпадает с %Y-%m-%d.

  • %T совпадает с %H:%M:%S.

Вот демо на ideone.

14
user669677

Еще один ответ, который я считаю простым в использовании:

echo date('c'); 

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

Это дата ISO 8601 (добавлена ​​в PHP 5) , которую использует MySQL

Правка

MySQL 5.7 не разрешает часовой пояс в datetime по умолчанию. Вы можете отключить ошибку с помощью 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

Чтобы быть в безопасности, всегда используйте UTC на сервере, укажите его в MySQL и PHP, а затем конвертируйте его только в языковой стандарт пользователя при отображении даты:

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

Или вы можете использовать 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

Для отладки я предпочитаю более короткий ( v4l.org ):

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

Мне нравится решение, опубликованное user1786647, я немного обновил его, чтобы изменить часовой пояс на аргумент функции и добавить дополнительную поддержку для передачи либо строки времени Unix, либо даты/времени для использования в возвращаемой метке даты.

Также включает откат для "setTimestamp" для пользователей, работающих с версией ниже PHP 5.3:

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

вы можете использовать функцию даты php с правильным форматом в качестве параметра,

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

Эквивалент PHP: time(): http://php.net/manual/en/function.time.php

0
Marco Marsala