Другие ресурсы
Сайт рецептов каждого дня салат из краснокочанной уникальное сочетание продуктов
Материалы для крыши: профилированные листы и металлочерепица цены с огромными скидками

Функции работы с датой и временем

Очень часто программисту приходится работать с датой и временем, какие же функции могут помочь ему в этом? Я наиболее часто пользуюсь 3-мя:

  • time
  • date
  • strtotime

Давайте рассмотрим каждую из этих функций по порядку. Функция time возвращает количество секунд прошедшее сначала эпохи Unix. (01.01.1970)
Т.е. если выполнить


<?php

echo time();

?>

На данный момент выведет вот такое число 1251829409. Столько секунд прошло с первого января 1970 года.
Функция date имеет гораздо более широкий функционал нежели функция time. Данный оператор форматирует дату так какмы того хотим, кроме того дополнительным параметром можно передавать любое значение timestamp в результате то значение, которое было передано нами будет отформатировано. Приведу простой пример:


<?php

echo date('d.m.y',1251829409);

?>

Данный пример выведет 01.09.09 т.е. ‘d’ это дни с ведущими нулями, m-номер месяца с ведущим нулем и ‘y’ две цифры номера года. Если второго параметра (timestamp времени) функция не имеет, то date возвращает время на настоящий момент.


<?php

echo date('d.m.y'); //выведет дату когда запускался скрипт

?>

Полный перечень параметров привожу в таблице ниже, взятой из официального мануала.

Символ в строке 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.
Пример:


<?php

echo strtotime("now"), "\n";

?>

Данная функция использует GNU формат даты, на мой взгляд, вы должны ознакомиться с данным форматом тут.
Напомню что это далеко не все функции работы с датой и временем в php. Советую почитать официальную инструкцию чтобы знать больше:)

Комментарии (3) к “Функции работы с датой и временем”

  • Dumov:

    Просмотрел десятки если не сотни сайтов(ищу готовое решение т.к. я не програмист).Результат – ноль.Ваш сайт чем-то вызвал доверие.Хочу поделиться возмущением и с надеждой что может Вы поможите.Нужны для сайта идущие цифровые часы в 24-часовом формате,с точностью до секунд и с указанием полной даты по GMT :день недели , месяц, число,время,год,с указанием локального часового пояса (чтоб понимать летнее или зимнее время).Чего только не обсуждают и предлагают.Но чаще всего (о ужас и бред) предлагаются часы с указание локального времени ,которое и так ТОРЧИТ у всех в правом нижнем углу.А ведь важно чтобы хоть китаец(сидя в Китае и заходя на сайт),хоть американец,хоть чех видели в отдельном маленьком окошке текущую дату и время по GMT ,а в полночь(по GMT) и смену даты (и возможный переход на зимнее/летнее время).Ели Вас не очень затруднит то буду крайне благодарен и с удовольствием размещу у себя солидную ссылку на Ваш сайт.С уважением.Константин.

  • К сожалению на php сделать идущие часы не удастся. Так как PHP язык серверный. Т.е часы будут обновляться только при запросе к серверу. Могу лишь предложить решение часы на javascript. Сделать время по GMT реально

  • Dumov:

    Буду рад скомному без украшательств решению на javascript.
    В общем если не сложно отпишитесь и по почте .
    По поводу летнего/зимнего времени похоже я погорячился и сказал глупость.
    GMT,GMT+1,GMT+… и т.д,- это абсолют.Так в Москве всегда GMT+3 (см.http://wwp.greenwichmeantime.com/time-zone/russia/) и летом и зимой,но летом Москва просто переводит стрелки на час вперёд не меняя своего местоположения на поверхности Земли:) и оставаясь в GMT+3.Поэтому значение GMT+? не может служить ориентиром для «зим/лет».Так же не все страны делают переход «зим/лет» и для ясности лучше обойти этот мутный вопрос.

Оставить Ответ