Как мне узнать текущую дату и время в PHP?

627

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

  • 0
    TLDR; $date = date('m/d/Y h:i:s a', time());
  • 0
    -1 потому что «этот вопрос не требует каких-либо исследований» (источник - всплывающая подсказка, когда вы наводите курсор на кнопку «понижать голос»). Поэтому, если у вас есть вопрос, он не должен быть вашим непосредственным помощником; сначала вы должны хотя бы RTFM или обратиться к Google (доступны другие поисковые системы;)).
Теги:
datetime

29 ответов

457

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

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

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());

Тогда все время будет в указанном вами часовом поясе:)

  • 87
    Вызов time () избыточен, date () автоматически использует текущее время.
  • 0
    Спасибо! Мне было интересно, как изменить часовой пояс на функцию date() :)
Показать ещё 7 комментариев
350
    // 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.

Для справки о временной зоне см. Список поддерживаемых часовых поясов.

  • 10
    Это гораздо более прямой ответ, чем главный. Спасибо!
  • 1
    Спасибо за ссылку на поддерживаемые часовые пояса, я собирался его погуглить :)
137

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

$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();
64

Ссылка: здесь ссылка

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

Код 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)
  • 0
    безусловно, лучший ~
57

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

  • 1
    Стоит отметить, что метка времени, возвращаемая функцией time() не зависит от часового пояса. (Таким образом, вызов date_default_timezone_set("your-particular-timezone"); до этого не будет никакого эффекта.)
  • 0
    @ ban-geoengineering - не уверен, что вы подразумеваете под «независимым от часового пояса»; это "зависит" от часового пояса, на котором установлен сервер? Вы можете настроить сервер на восточном побережье на часовой пояс на западном побережье или наоборот.
53

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

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

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

$date = date('Format String');
  • 17
    2-й аргумент функции даты считается time (), если оставить его пустым.
43

PHP date функция может выполнить это задание

дата()

Описание:

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)
34

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

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

В соответствии с приведенным выше примером кода вы захотите отформатировать эту информацию после получения отметки времени Unix. Неформатированная временная метка Unix выглядит так:

Unix Отметка времени: 1232659628

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

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

http://us.php.net/date

В качестве примера следующий код возвращает дату, которая выглядит так:

01/22/2009 04:35:00 pm

echo date("m/d/Y h:i:s a", time());
  • 0
    Как разные веб-серверы обрабатывают $_SERVER['REQUEST_TIME'] ?
  • 0
    Лучший ответ руки вниз. Вы даже добавляете, как перейти от отметки времени UNIX к дате обычного человека, что очень ценится
21
 $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().

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

работает, но как узнать, есть ли это EST, PST?

  • 0
    Что я имею в виду, когда EST приходит время, когда я PST ... но почему? Это время сервера и сервер EST? Могу ли я получить время пользователей? У их сервера может быть другой часовой пояс, нет?
  • 0
    Посмотрите в руководстве: docs.php.net/manual/en/function.date.php
Показать ещё 5 комментариев
13
echo date("d-m-Y H:i:sa");

Этот код получит дату и время сервера, на котором выполняется код.

  • 1
    Понравился за вводящий в заблуждение ответ. Нет, он не получит время вашего локального компьютера, если вы не используете сервер также локально. Он получит дату и время сервера.
  • 0
    @MattWithoos - «Этот код получит дату и время« сервера », который он ничего не сказал о« локальной машине », которую вы сказали. Вам также не нужно запускать свой сервер« локально »- вы можете иметь сервер в любой точке мира установлен часовой пояс, который вы хотите. Ваш отрицательный голос был абсолютно неверным и без причины
Показать ещё 2 комментария
12

его очень простая

echo $date = date ('Y-m-d H: i: s');

12

Вы также можете использовать этот формат

$date = date("d-m-Y");

или

$date = date("Y-m-d H:i:s"); 
12

В соответствии со статьей Как получить текущее время дня (СЕЙЧАС) с PHP существует два распространенных способа получить текущую дату. Чтобы получить текущее datetime (сейчас) с помощью PHP, вы можете использовать класс date с любой версией PHP или лучше класс datetime с PHP >= 5.2.

Здесь доступны различные выражения формата даты.

Пример использования даты

Это выражение вернет СЕЙЧАС в формате Y-m-d H:i:s.

<?php
    echo date('Y-m-d H:i:s');
?>

Пример использования класса datetime

Это выражение вернет СЕЙЧАС в формате Y-m-d H:i:s.

<?php
    $dt = new DateTime();
    echo $dt->format('Y-m-d H:i:s');
?>
11
<?php
echo "<b>".date('l\, F jS\, Y ')."</b>";
?>

Печатает как это

Воскресенье, 9 декабря 2012 г.

8
<?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)
?>
8
date(format,timestamp)

Функция Date возвращает строку, форматированную в соответствии с заданной строкой формата, используя заданную метку времени или текущее время, если не указана метка времени. Другими словами, временная метка является необязательной и по умолчанию используется значение time().

И параметры -

format - обязательно. Задает формат метки времени

timestamp - (Необязательно) Указывает метку времени. По умолчанию текущая дата и время

Как получить простую дату

Требуемый параметр формата функции date() указывает, как форматировать date (or time).

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

  • d - представляет день месяца (от 01 до 31)
  • m - Представляет месяц (от 01 до 12)
  • Y - представляет год (четыре цифры)
  • l (нижний регистр "L" ) - представляет день недели

Другие символы, такие как "/", ".", or "-", также могут быть вставлены между символами для добавления дополнительного форматирования.

Ниже приведенные ниже форматы датируются тремя разными способами:

<?php
echo "Today is " . date("Y/m/d") . "<br>";
echo "Today is " . date("Y.m.d") . "<br>";
echo "Today is " . date("Y-m-d") . "<br>";
echo "Today is " . date("l");
?>

Некоторые полезные ссылки

  • gmdate() - Отформатируйте GMT/UTC дата/время
  • idate() - Отформатируйте локальное время/дата как целое
  • getdate() - Получить информация о дате/времени
  • getlastmod() - Получает время последней модификации страницы.
  • mktime() - Получите Unix отметка времени для даты
  • strftime() - Формат локальное время/дата в соответствии с настройками локали.
  • time() - Возвратный ток Временная метка Unix
  • strtotime() - Разберитесь о любом текстовом описании даты и времени на английском языке в Unix Отметка времени
  • Предопределенная дата-время Константы
8
date_default_timezone_set('Europe/Warsaw');
echo("<p class='time'>".date('H:i:s')."</p>");
echo("<p class='date'>".date('d/m/Y')."</p>");
8

Установите часовой пояс:

date_default_timezone_set('Asia/Calcutta');

Затем вызовите функции даты

$date = date('Y-m-d H:i:s');
8

Если вы хотите разную шкалу времени, используйте:

$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);

date_default_timezone_set("Asia/Calcutta");
echo date("Y/m/d H:i:s");
  • 0
    Что вы подразумеваете под "шкалой времени"?
  • 0
    "часовой пояс", наверное.
Показать ещё 1 комментарий
7

Вы можете использовать этот код.

  <?php
  $currentDateTime = date('Y-m-d H:i:s');
  echo $currentDateTime;
  ?>
7

Формат даты также зависит:

echo date("d/m/Y H:i:sa");    // 13/04/2017 19:38:15pm
  • 0
    Это вряд ли понятно. Можете ли вы уточнить?
7

Я обнаружил, что самый простой способ получить текущее время в PHP - это что-то вроде этого.

//Prints out something like 10:00am Just be sure to set your timezone correctly.
date_default_timezone_set("America/Chicago");
$TIME = date('G:ia'); 
6

Еще один простой способ взять временную метку текущей даты и времени, используя функцию mktime()

$now = mktime(); //return timestamp of current time

то вы можете преобразовать это в другой формат даты:

//// Prints something like: Thursday 26th of January 2017 01:12:36 PM
echo date('l jS \of F Y h:i:s A',$now);

больше форматов даты здесь: http://php.net/manual/en/function.date.php

5
// set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('UTC');


// Prints something like: Monday
echo date("l");

// Prints something like: Monday 8th of August 2016 03:12:46 PM
echo date('l jS \of F Y h:i:s A');

// Prints: July 1, 2016 is on a Saturday
echo "July 1, 2016 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2016));

/* use the constants in the format parameter */
// prints something like: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);

// prints something like: 2016-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
4

Если вы хотите получать Date как 12-3-2016 отдельно каждый день, месяц и год, затем скопируйте этот код

$day=date("d");
$month=date("m");
$year=date("y");
print "date".$day."-".$month."-".$year;
3

Это может помочь вам.

Вот несколько символов, которые обычно используются для времени:

  • h - 12-часовой формат часа с ведущими нулями (от 01 до 12).
  • я - минуты с ведущими нулями (от 00 до 59)
  • s - Секунды с ведущими нулями (от 00 до 59)
  • a - Нижний регистр Ante meridiem и Post meridiem (am или pm)

Получить часовую зону

<?php
date_default_timezone_set("America/New_York");
echo "The time is " . date("h:i:sa");
?>

проверьте это (необязательно)

<?php
    $d=mktime(11, 14, 54, 8, 12, 2014);
    echo "Created date is " . date("Y-m-d h:i:sa", $d);
    ?>

для даты

<?php
    echo "Today is " . date("Y/m/d") . ;
    echo "Today is " . date("Y.m.d") . ;
    echo "Today is " . date("Y-m-d") . ;
    echo "Today is " . date("l");
?>

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

  • d - представляет день месяца (от 01 до 31)
  • m - Представляет месяц (от 01 до 12)
  • Y - представляет год (четыре цифры)
  • l (нижний регистр "L" ) - представляет день недели

Source-W3-Schools

  • 1
    Какова цель трейлинга . в date("Y/m/d") . ; ?
  • 0
    Чтобы связать другую строку или переменную, я думаю. Спасибо за ваши правки. :-)
3

Если вы Бангладеш. И если вы хотите получить время в Дакке, тогда используйте его

$date = new DateTime();
$date->setTimeZone(new DateTimeZone("Asia/Dhaka"));
$get_datetime = $date->format('d.m.Y H:i:s');
2

PHP возвращает текущее время в секундах, которое вам нужно отформатировать в любом формате.

<?php
//time() returns current time in seconds
$in_seconds = time();
//strftime - Format a local time/date according to locale settings
echo strftime("%m/%d/%y",$in_seconds);
?>

Ссылка: http://php.net/manual/en/function.strftime.php

Ещё вопросы

Сообщество Overcoder
Наверх
Меню