Как мне узнать текущую дату и время в PHP? - PullRequest
761 голосов
/ 22 января 2009

Какая функция PHP может вернуть текущую дату / время?

Ответы [ 35 ]

575 голосов
/ 23 января 2009

Время будет идти по времени вашего сервера. Простой обходной путь для этого - вручную установить часовой пояс с помощью date_default_timezone_set до вызова функций date() или time().

Я в Мельбурне, Австралия , поэтому у меня есть что-то вроде этого:

date_default_timezone_set('Australia/Melbourne');

Или другой пример - LA - US :

date_default_timezone_set('America/Los_Angeles');

Вы также можете увидеть, в каком часовом поясе находится сервер, через:

date_default_timezone_get();

Так что-то вроде:

$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;

Таким образом, краткий ответ на ваш вопрос будет:

// Change the line below to your timezone!
date_default_timezone_set('Australia/Melbourne');
$date = date('m/d/Y h:i:s a', time());

Тогда все время будет в часовом поясе, который вы только что установили:)

456 голосов
/ 06 марта 2012
// Simply:
$date = date('Y-m-d H:i:s');

// Or:
$date = date('Y/m/d H:i:s');

// This would return the date in the following formats respectively:
$date = '2012-03-06 17:33:07';
// Or
$date = '2012/03/06 17:33:07';

/** 
 * This time is based on the default server time zone.
 * If you want the date in a different time zone,
 * say if you come from Nairobi, Kenya like I do, you can set
 * the time zone to Nairobi as shown below.
 */

date_default_timezone_set('Africa/Nairobi');

// Then call the date functions
$date = date('Y-m-d H:i:s');
// Or
$date = date('Y/m/d H:i:s');

// date_default_timezone_set() function is however
// supported by PHP version 5.1.0 or above.

Информацию о часовом поясе см. В Список поддерживаемых часовых поясов .

177 голосов
/ 29 мая 2013

Начиная с PHP 5.2.0 вы можете сделать это, используя OOP и DateTime() (конечно, если вы предпочитаете OOP):

$now = new DateTime();
echo $now->format('Y-m-d H:i:s');    // MySQL datetime format
echo $now->getTimestamp();           // Unix Timestamp -- Since PHP 5.3

И указать timezone:

$now = new DateTime(null, new DateTimeZone('America/New_York'));
$now->setTimezone(new DateTimeZone('Europe/London'));    // Another way
echo $now->getTimezone();
84 голосов
/ 29 августа 2013

Ссылка: Вот ссылка

Это может быть более надежным, чем простое добавление или вычитание количества секунд в дне или месяце к метке времени из-за перехода на летнее время.

код PHP

// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone

$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
$today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (the MySQL DATETIME format)
61 голосов
/ 22 января 2009

PHP time () возвращает текущую метку времени Unix. При этом вы можете использовать функцию date () для форматирования в соответствии с вашими потребностями.

$date = date('Format String', time());

Как упоминал Паоло в комментариях, второй аргумент является излишним. Следующий фрагмент кода эквивалентен приведенному выше:

$date = date('Format String');
58 голосов
/ 22 января 2009

Вы можете использовать $_SERVER['REQUEST_TIME'] переменную (доступно с PHP 5.1.0) или time() функцию , чтобы получить текущую метку времени Unix.

49 голосов
/ 23 января 2009

Вы можете использовать как переменную $_SERVER['REQUEST_TIME'], так и функцию time(). Оба они возвращают метку времени Unix.

В большинстве случаев эти два решения будут давать одинаковую метку времени Unix . Разница между ними заключается в том, что $_SERVER['REQUEST_TIME'] возвращает отметку времени самого последнего запроса к серверу, а time() возвращает текущее время. Это может создать незначительные различия в точности в зависимости от вашего приложения, но для большинства случаев обоих этих решений должно быть достаточно.

Исходя из приведенного выше примера кода, вы захотите отформатировать эту информацию после получения Unix Timestamp . Unformatted Unix time выглядит так: 1232659628

Таким образом, чтобы получить что-то, что будет работать, вы можете использовать функцию date() для форматирования.

Хороший справочник способов использования функции date() находится в руководстве по PHP .

Например, следующий код возвращает дату, которая выглядит следующим образом: 01/22/2009 04:35:00 pm:

echo date("m/d/Y h:i:s a", time());
43 голосов
/ 17 апреля 2015

Функция PHP date может сделать эту работу.

* 1006 Дата * ()

Описание:

string date(string $format [, int $timestamp = time()])

Возвращает строку, отформатированную в соответствии с заданной строкой формата, используя данную целочисленную временную метку или текущее время, если временная метка не указана.

Примеры:

$today = date("F j, Y, g:i a");               // March 10, 2001, 5:16 pm
$today = date("m.d.y");                       // 03.10.01
$today = date("j, n, Y");                     // 10, 3, 2001
$today = date("Ymd");                         // 20010310
$today = date('h-i-s, j-m-y, it is w Day');   // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y");             // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');   // 17:03:18 m is month
$today = date("H:i:s");                       // 17:16:18
$today = date("Y-m-d H:i:s");                 // 2001-03-10 17:16:18 (the MySQL DATETIME format)
24 голосов
/ 07 июня 2013
 $date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
 echo $date->format('d-m-Y H:i:s');

Обновление

 //Also get am/pm in datetime:
 echo $date->format('d-m-Y H:i:s a'); // output 30-12-2013 10:16:15 am

Для формата даты PHP date () Функция полезна.

20 голосов
/ 23 января 2009

Использование:

$date = date('m/d/Y h:i:s a', time());

Работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...