Функции работы с датой и временем
Очень часто программисту приходится работать с датой и временем, какие же функции могут помочь ему в этом? Я наиболее часто пользуюсь 3-мя:
- time
- date
- strtotime
Давайте рассмотрим каждую из этих функций по порядку. Функция time возвращает количество секунд прошедшее сначала эпохи Unix. (01.01.1970)
Т.е. если выполнить
|
На данный момент выведет вот такое число 1251829409. Столько секунд прошло с первого января 1970 года.
Функция date имеет гораздо более широкий функционал нежели функция time. Данный оператор форматирует дату так какмы того хотим, кроме того дополнительным параметром можно передавать любое значение timestamp в результате то значение, которое было передано нами будет отформатировано. Приведу простой пример:
|
Данный пример выведет 01.09.09 т.е. ‘d’ это дни с ведущими нулями, m-номер месяца с ведущим нулем и ‘y’ две цифры номера года. Если второго параметра (timestamp времени) функция не имеет, то date возвращает время на настоящий момент.
|
Полный перечень параметров привожу в таблице ниже, взятой из официального мануала.
| Символ в строке format | Описание | Пример возвращаемого значения |
|---|---|---|
| a | Ante meridiem или Post meridiem в нижнем регистре | am или pm |
| A | Ante meridiem или Post meridiem в верхнем регистре | AM или PM |
| B | Время в стадарте Swatch Internet | От 000 до 999 |
| c | Дата в формате ISO 8601 (добавлено в PHP 5) | 2004-02-12T15:19:21+00:00 |
| d | День месяца, 2 цифры с ведущими нулями | от 01 до 31 |
| D | Сокращенное наименование дня недели, 3 символа | от Mon до Sun |
| F | Полное наименование месяца, например January или March | от January до December |
| g | Часы в 12-часовом формате без ведущих нулей | От 1 до 12 |
| G | Часы в 24-часовом формате без ведущих нулей | От 0 до 23 |
| h | Часы в 12-часовом формате с ведущими нулями | От 01 до 12 |
| H | Часы в 24-часовом формате с ведущими нулями | От 00 до 23 |
| i | Минуты с ведущими нулями | 00 to 59 |
| I (заглавная i) | Признак летнего времени | 1, если дата соответствует летнему времени, иначе 0 otherwise. |
| j | День месяца без ведущих нулей | От 1 до 31 |
| l (строчная ‘L’) | Полное наименование дня недели | От Sunday до Saturday |
| L | Признак високосного года | 1, если год високосный, иначе 0. |
| m | Порядковый номер месяца с ведущими нулями | От 01 до 12 |
| M | Сокращенное наименование месяца, 3 символа | От Jan до Dec |
| n | Порядковый номер месяца без ведущих нулей | От 1 до 12 |
| O | Разница с временем по Гринвичу в часах | Например: +0200 |
| r | Дата в формате RFC 2822 | Например: Thu, 21 Dec 2000 16:01:07 +0200 |
| s | Секунды с ведущими нулями | От 00 до 59 |
| S | Английский суффикс порядкового числительного дня месяца, 2 символа |
st, nd, rd или
th. Применяется совместно с j |
| t | Количество дней в месяце | От 28 до 31 |
| T | Временная зона на сервере | Примеры: EST, MDT … |
| U | Количество секунд, прошедших с начала Эпохи Unix (The Unix
Epoch, 1 января 1970, 00:00:00 GMT) |
См. также time() |
| w | Порядковый номер дня недели | От 0 (воскресенье) до 6 (суббота) |
| W | Порядковый номер недели года по ISO-8601, первый день недели – понедельник (добавлено в PHP 4.1.0) | Например: 42 (42-я неделя года) |
| Y | Порядковый номер года, 4 цифры | Примеры: 1999, 2003 |
| y | Номер года, 2 цифры | Примеры: 99, 03 |
| z | Порядковый номер дня в году (нумерация с 0) | От 0 до 365 |
| Z | Смещение временной зоны в секундах. Для временных зон
западнее UTC это отрицательное число, восточнее UTC – положительное. |
От -43200 до 43200 |
Ну и в заключении рассмотрим еще одну функцию работы с датой и временем strtotime. Данная функция преобразует строку даты на английском языке в timestamp.
Пример:
|
Данная функция использует GNU формат даты, на мой взгляд, вы должны ознакомиться с данным форматом тут.
Напомню что это далеко не все функции работы с датой и временем в php. Советую почитать официальную инструкцию чтобы знать больше:)
Просмотрел десятки если не сотни сайтов(ищу готовое решение т.к. я не програмист).Результат – ноль.Ваш сайт чем-то вызвал доверие.Хочу поделиться возмущением и с надеждой что может Вы поможите.Нужны для сайта идущие цифровые часы в 24-часовом формате,с точностью до секунд и с указанием полной даты по GMT :день недели , месяц, число,время,год,с указанием локального часового пояса (чтоб понимать летнее или зимнее время).Чего только не обсуждают и предлагают.Но чаще всего (о ужас и бред) предлагаются часы с указание локального времени ,которое и так ТОРЧИТ у всех в правом нижнем углу.А ведь важно чтобы хоть китаец(сидя в Китае и заходя на сайт),хоть американец,хоть чех видели в отдельном маленьком окошке текущую дату и время по GMT ,а в полночь(по GMT) и смену даты (и возможный переход на зимнее/летнее время).Ели Вас не очень затруднит то буду крайне благодарен и с удовольствием размещу у себя солидную ссылку на Ваш сайт.С уважением.Константин.
К сожалению на php сделать идущие часы не удастся. Так как PHP язык серверный. Т.е часы будут обновляться только при запросе к серверу. Могу лишь предложить решение часы на javascript. Сделать время по GMT реально
Буду рад скомному без украшательств решению на javascript.
В общем если не сложно отпишитесь и по почте .
По поводу летнего/зимнего времени похоже я погорячился и сказал глупость.
GMT,GMT+1,GMT+… и т.д,- это абсолют.Так в Москве всегда GMT+3 (см.http://wwp.greenwichmeantime.com/time-zone/russia/) и летом и зимой,но летом Москва просто переводит стрелки на час вперёд не меняя своего местоположения на поверхности Земли:) и оставаясь в GMT+3.Поэтому значение GMT+? не может служить ориентиром для «зим/лет».Так же не все страны делают переход «зим/лет» и для ясности лучше обойти этот мутный вопрос.