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

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

22.01.2009 20:09:18
TLDR; $date = date('m/d/Y h:i:s a', time());
I am the Most Stupid Person 6.04.2018 04:32:36
30 ОТВЕТОВ

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

65
22.01.2009 20:11:43
Стоит отметить, что метка времени, возвращаемая time()функцией, не зависит от часового пояса. (Так что звонки date_default_timezone_set("your-particular-timezone");раньше не будут иметь никакого эффекта.)
ban-geoengineering 16.07.2014 12:35:30
@ ban-geoengineering - не уверен, что вы подразумеваете под «независимым от часового пояса»; это "зависит" от часового пояса, на котором установлен сервер? Вы можете настроить сервер на восточном побережье на часовой пояс на западном побережье или наоборот.
Neal Davis 23.01.2018 20:11:43

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

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

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

$date = date('Format String');
67
22.02.2019 23:38:53
2-й аргумент функции даты считается time (), если оставить его пустым.
Paolo Bergantino 7.07.2009 07:10:07

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

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

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

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

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

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

echo date("m/d/Y h:i:s a", time());
56
11.11.2018 11:39:42
Как работают разные веб-серверы $_SERVER['REQUEST_TIME'] ?
Pacerier 19.03.2015 04:20:08
Лучший ответ руки вниз. Вы даже добавляете, как перейти от отметки времени UNIX к дате обычного человека, что очень ценится
Kolob Canyon 14.07.2017 17:16:25

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

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

Оно работает.

21
22.02.2019 23:40:56
Что я имею в виду, когда EST возвращается, когда я PST ... но почему? Это время сервера и сервер EST? Могу ли я получить время пользователей? У их сервера может быть другой часовой пояс, нет?
Mike 22.01.2009 22:38:53
Функция date - это время вашего сервера, либо проверьте его, либо временно установите / w PHP перед запуском date.
TravisO 22.01.2009 22:48:02
спасибо, мой сервис не должен обновляться с php, потому что O работает для GMT, но не для P или часового пояса "e" ... спасибо !!
Mike 22.01.2009 22:54:39
Это $ date = date ('m / d / Y h: i: s a', time ()); получает дату сервера, но все еще не получает мне дату пользователя. Это показывает мне в EST, когда я в PST. Я хочу получить дату, когда пользователь отправляет форму, и, как и я, их сервер может находиться в другом часовом поясе.
Mike 22.01.2009 22:57:05
На самом деле, теперь, когда я думаю об этом, время не так важно, как дата. СПАСИБО ВСЕМ!!
Mike 22.01.2009 23:07:07

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

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

date_default_timezone_set('Australia/Melbourne');

Или другой пример - Лос-Анджелес - США :

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

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

620
15.08.2014 21:06:37
Вызов time () избыточен, date () автоматически использует текущее время.
too much php 23.01.2009 00:26:17
ОП никогда не спрашивал о часовом поясе. Более простой и правильный ответ просто показал бы время сервера.
AyexeM 21.02.2014 16:38:22
@AyexeM Я действительно оценил дополнительную информацию о часовом поясе. Это спасло меня от второго поиска.
Marquizzo 8.10.2014 19:11:18
Вы можете получить весь часовой пояс отсюда. Часовой пояс
Yousef Altaf 5.01.2015 12:17:15
@AyexeM Более простой и правильный ответ - не опустить потенциально важную и связанную информацию, а вместо этого ответить на вопрос, как вы предлагаете, а затем предоставить дополнительную информацию о часовых поясах под ним. Нет необходимости опускать потенциально важную информацию только потому, что ее не запрашивали.
Jamie 27.02.2015 09:08:30
// 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.

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

518
5.07.2018 07:46:34
Это гораздо более прямой ответ, чем главный. Спасибо!
dev_willis 20.11.2015 14:07:44
Спасибо за ссылку на поддерживаемые часовые пояса, я собирался гуглить это :)
htafoya 6.12.2017 22:43:56

Я обнаружил, что самый простой способ узнать текущее время в 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'); 
9
19.10.2012 14:13:16
<?php
echo "<b>".date('l\, F jS\, Y ')."</b>";
?>

Отпечатки как это

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

13
9.12.2012 08:46:44

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

use \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();
189
16.03.2020 08:35:37
это хороший ответ, но вы забыли сказать, что нам нужно использовать \ Datetime перед вызовом :) ty
Amor.o 22.07.2019 07:46:06
@ Amor.o Спасибо за хедз-ап, я обновил ответ сейчас - хотя немного поздно, и я честно не могу вспомнить получение уведомления для вашего комментария. Относительно использования Datatimeпространства имен; Я не могу вспомнить, было ли это в 2013 году, и я годами не писал ни одного PHP-кода. В любом случае, ваше предложение кажется правильным, поэтому еще раз спасибо.
Mahdi 16.03.2020 08:38:18
Добро пожаловать :)
Amor.o 16.03.2020 13:18:15
 $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 () .

27
2.02.2014 10:39:52

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

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

Код 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)
92
24.09.2016 10:44:51
безусловно, лучший ~
Yash Kumar Verma 22.09.2017 16:52:50

Согласно статье Как получить текущую дату (NOW) с помощью PHP , существует два распространенных способа получения текущей даты. Чтобы получить текущую дату (сейчас) с 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');
?>
14
2.02.2014 10:42:19

Если вы хотите другой график, пожалуйста, используйте:

$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");
10
2.02.2014 10:42:57
Что вы подразумеваете под "шкалой времени"?
Peter Mortensen 2.02.2014 10:43:32
"часовой пояс", наверное.
Saneem 11.03.2014 15:26:08
Я полагаю, что @Jaymin может означать, если вы хотите скорректировать время на день вперед, на месяц назад и т. Д.
Just Plain High 5.05.2014 11:49:12

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

date_default_timezone_set('Asia/Calcutta');

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

$date = date('Y-m-d H:i:s');
11
5.05.2014 11:44:44
date_default_timezone_set('Europe/Warsaw');
echo("<p class='time'>".date('H:i:s')."</p>");
echo("<p class='date'>".date('d/m/Y')."</p>");
10
12.05.2014 21:40:12

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

свидание()

Описание:

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)
45
22.02.2019 23:44:59
// 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));
6
22.02.2019 23:45:40

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

$day = date("d");
$month = date("m");
$year = date("y");
print "date" . $day . "-" . $month . "-" . $year;
4
22.02.2019 23:48:59
date(format, timestamp)

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

И параметры -

Формат - Обязательно. Определяет формат отметки времени

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

Как получить простое свидание

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

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

  1. d - представляет день месяца (с 01 по 31)
  2. m - представляет месяц (от 01 до 12)
  3. Y - представляет год (из четырех цифр)
  4. 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 () - форматирует дату / время по Гринвичу / UTC
  • idate () - форматирует местное время / дату как целое число
  • getdate () - Получить информацию о дате / времени
  • getlastmod () - Получает время последней модификации страницы
  • mktime () - получает метку времени Unix для даты
  • strftime () - форматирует местное время / дату в соответствии с настройками локали
  • time () - возвращает текущую метку времени Unix
  • strtotime () - анализирует любое текстовое описание даты и времени на английском языке в метку времени Unix
  • Предопределенные константы DateTime
11
22.02.2019 23:50:41

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

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

Или

$date = date("Y-m-d H:i:s");
16
22.02.2019 23:51:19

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

3
22.02.2019 23:52:15
<?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)
?>
12
19.01.2017 09:07:11

Другой простой способ - взять метку времени текущей даты и времени. Используйте функцию mktime () :

$now = mktime(); // Return timestamp of the 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

8
22.02.2019 23:53:36

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

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

это очень просто

echo $ date = date ('Ymd H: i: s');

24
25.02.2019 04:42:26
echo date("d-m-Y H:i:sa");

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

18
9.07.2017 09:32:19
Понравился за вводящий в заблуждение ответ. Нет, он не получит время вашего локального компьютера, если вы не используете сервер также локально. Он получит дату и время сервера.
MattWithoos 9.07.2017 05:16:38
@MattWithoos - «Этот код получит дату и время« сервера », который он ничего не сказал о« локальной машине », о которой вы говорили. Вам также не нужно запускать сервер« локально »- вы можете иметь сервер в любой точке мира установлен часовой пояс, который вы хотите. Ваш нисходящий голос был абсолютно неверным и без причины
Neal Davis 23.01.2018 20:06:38
@NealDavis Вы думали посмотреть на редактирование? Я разместил этот комментарий, предложил изменить неверную информацию и тем временем дождался ее утверждения. Теперь он одобрен и показывает правильную информацию.
MattWithoos 24.01.2018 22:19:38
@NealDavis Кроме того, если вам надоело читать оригинальный пост, в нем буквально говорилось: «Этот код получит дату и время вашего локального компьютера (ПК)». Это вводит в заблуждение.
MattWithoos 24.01.2018 22:21:24

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

echo date("d/m/Y H:i:sa"); // 13/04/2017 19:38:15pm
10
22.02.2019 23:57:39
Это вряд ли понятно. Можете ли вы уточнить?
Peter Mortensen 22.02.2019 23:58:03

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

<?php
    $currentDateTime = date('Y-m-d H:i:s');
    echo $currentDateTime;
?>
10
22.02.2019 23:58:47

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

  1. ч - 12-часовой формат часа с ведущими нулями (от 01 до 12)
  2. я - минуты с ведущими нулями (от 00 до 59)
  3. s - секунды с ведущими нулями (от 00 до 59)
  4. а - строчные анте меридием и пост меридием (утра или вечера)

Получите ваш часовой пояс

<?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");
?>

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

  1. d - представляет день месяца (с 01 по 31)
  2. m - представляет месяц (от 01 до 12)
  3. Y - представляет год (из четырех цифр)
  4. l (нижний регистр 'L') - представляет день недели

Источник-W3-школа

5
23.02.2019 00:00:40
Какова цель отстающей .в date("Y/m/d") . ;?
Peter Mortensen 23.02.2019 00:01:36
Чтобы связать другую строку или переменную, я думаю. Спасибо за ваши правки. :-)
Raheel Khan 1.03.2019 20:44:50

Мы можем использовать dateфункцию и установить часовой пояс по умолчанию:

<?php
    date_default_timezone_set("Asia/Kolkata");
    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");
    echo "The time is " . date("h:i:sa");
?>
3
23.02.2019 00:02:33