Работа с датой и временем в PHP
Очевидно, что очень часто программистам приходится работать с датой и временем. Самый простой пример - это дата и время отправки сообщения на форуме. И, разумеется, такие вещи могут реализоваться на PHP, тем более, что возможностей по работе с датой и временем в PHP очень много.
Базовая функция, связанная с датой и временем в PHP, - это функция time(), которая возвращает количество секунд, прошедших с полуночи 01.01.1970 (зарождение эпохи Unix):
<?php
echo time();
?>
Запустив данный скрипт, Вы узнаете, сколько секунд прошло с полуночи 01.01.1970 до момента вызова функции time() в Вашем скрипте.
Разумеется, помимо этой базовой функции, которая присутствует во всех языках программирования, где можно работать с датой и временем (по крайней мере, среди тех, которые я знаю), существует и другая функция, которая называется getdate():
<?php
$datetime = getdate();
foreach ($datetime as $k=>$v)
echo "$k - $v<br />";
?>
Запустив данный скрипт, Вы увидите набор ключей в массиве и их соответствующих значений (заодно, повторили конструкцию foreach). Думаю, что теперь для Вас не составит труда узнать любые данные, связанные с датой и временем. Например, чтобы вывести текущее время, необходимо написать следующий код:
<?php
$datetime = getdate();
echo $datetime['hours'].":".$datetime['minutes'].":".$datetime['seconds'];
?>
Также у функции getdate() существует необязательный параметр, который означает количество секунд, прошедших с полуночи 01.01.1970. Он сделан для того, чтобы эта функция могла возвращать не только текущие время и дату, а, вообще говоря, любые:
<?php
$datetime = getdate(152353232);
echo $datetime['year'];
?>
В результате, Вы увидите 1974-ый год.
Также существует функция date(). Я рекомендую посмотреть описание по ней в справочнике, так как данная функция принимает весьма сложный параметр, который задаёт формат вывода даты. Элементов форматирования чуть больше 30-ти штук. И в примере ниже я приведу несколько из них, а остальные посмотрите в справочнике, потому что их запоминать не нужно, но ознакомиться с ними крайне желательно. А принцип их использования знать обязательно, и о нём следующий пример:
<?php
echo date("Сегодня d.m.Y H:i:s");
?>
В результате, Вы увидите что-то наподобие этого: "Сегодня 15.11.2010 21:44:24". Также у функции date() есть ещё второй необязательный параметр, задающий timestamp, как раз та величина, равная количеству секунд, прошедших с полуночи 01.01.1970. Пример использования второго параметра:
<?php
echo date("Когда-то было d.m.Y H:i:s", 5393235329);
?>
Также существует функция gmdate(), которая является полным аналогом функции date(), но функция gmdate() показывает время не по часовому поясу сервера, на котором работает скрипт, а по Гринвичу. Очевидно, что с помощью этой функции надо сохранять всю информацию о дате и времени, которую видит пользователь, а при выводе нужно подстраиваться под часовой пояс каждого пользователя (в идеале, конечно):
<?php
echo gmdate("Сейчас на Гринвиче D M j H:i:s T Y")
?>
В результате, Вы увидите примерно следующее: "Mon Nov 15 18:52:45 GMT 2010". Разумеется, у Вас будет выведена уже другая дата, но в аналогичном формате. Также я настоятельно рекомендую залезть в справочник и просто ознакомиться с другими элементами даты и времени в PHP (я привёл только треть), так как функции date() и gmdate() - это самый простой и самый быстрый способ получить дату и время в практически любом формате.
-
- Михаил Русаков
Комментарии (7):
Я всё понимаю, что с датой работать очень легко, но всё таки - напишите статью как сделать дату для каждого пользователя правильной, ни одной статьи про это нету, лазил 4 часа непрерываясь в поисках ответа на этот вопрос, 92 страницы в гугле обошёл и не нашёл, Пожалуйста напишите про это статью, так как у меня люди на сайте из разных стран, а время даже не моеё страны, совсем другой, которая на 6 часов больше моего времени...а я живу в Украине...напишите статью очень вас прошу
Ответить
Да, Михаил, меня тоже очень интересует этот вопрос! Хотелось бы статью! Спасибо!
Ответить
Хорошо, через 1-2 недели будет такая статья.
Ответить
Спасибо большое, жду с нетерпением!
Ответить
А можно адрес этой статьи (если она уже есть)?
Ответить
http://myrusakov.ru/php-tz-time.html
Ответить
Здравствуйте ! А как вычитать минуты ? К примеру у меня есть две переменные в минутах: $start = 35; $now = date("i"); Нужно вычесть из $now-$start чтобы получилось правильно а то не получается ... (
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.