Функция NOW () в PHP
есть ли функция PHP, которая возвращает дату и время в том же формате, что и функция MySQL NOW()
?
Я знаю, как это сделать с помощью date()
, но я спрашиваю, есть ли функция только для этого.
например, чтобы вернуться:
2009-12-01 00:00:00
14 ответов
date('Y-m-d H:i:s')
посмотрите здесь для больше деталей:http://pl.php.net/manual/en/function.date.php
использовать эту функцию:
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');
}
функция MySQL NOW()
возвращает текущую метку времени. Единственный способ, который я нашел для PHP, - использовать следующий код.
$curr_timestamp = 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");
еще один ответ, который я нахожу простым в использовании:
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
или вы можете использовать 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 или datetime для использования для возвращаемой метки данных.
также включает в себя откат для "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");
}
вы можете использовать функцию даты php с правильным форматом в качестве параметра,
echo date("Y-m-d H:i:s");
вы можете использовать класс simplePHP для этого:
echo $date->now();
этот класс также предоставляет множество полезных методов для дата сложения, вычитания и сравнения. Ты можешь!--4-- > проверьте страницу учебники для получения дополнительных примеров.