Для справки, напишу пару функций для получения даты и времени. Когда пишешь php код, работа с датой, является очень частым процессом.
Получим время в секундах
1 2 3 |
$t=time(); |
Получим дату по формату: День, Месяц, Год, Час, Минута, Секунда
1 2 3 |
$t=date('d.m.Y G:i:s',time()); |
Получим: 23.02.2024 14:04:46
Таблица расшифровки символов, которые можно использовать при получении необходимого отображения даты/время. Разделитель можно использовать любой.
Символ в строке | Описание | Пример возвращаемого значения |
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, если дата соответствует летнему времени, иначе 0otherwise. |
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) | |
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 |
Есть еще другой вариант формирования даты.
1 2 3 |
$t=getdate();//Получаем массив времени |
Эта функция получает ассоциативный массив, где каждый из индексов отвечает за свой параметр
Чтобы получить час, нужно обратиться к массиву, через ассоциативный индекс:
1 2 3 |
$h=$t[‘hours’] |
Индекс | Описание | Пример значения |
seconds | Секунды | От 0 до 59 |
minutes | Минуты | От 0 до 59 |
hours | Часы | От 0 до 23 |
mday | Порядковый номер дня месяца | От 1 до 31 |
wday | Порядковый номер дня | От 0 (воскресенье) до 6 (суббота) |
mon | Порядковый номер месяца | От 1 до 12 |
year | Порядковый номер года, 4 цифры | Примеры: 1999, 2003 |
yday | Порядковый номер дня в году (нумерация с 0) | От 0 до 365 |
weekday | Полное наименование дня недели | От Sunday до Saturday |
month | Полное наименование месяца, например January или March | от January до December |
0 | Колическтво секунд, прошедших с начала Эпохи Unix (The Unix Epoch), подобно значению, возвращаемому функцией time() и используемому функцией date(). | Платформо-зависимое, в большинстве случаев от-2147483648 до 2147483647. |
Иногда встречается, что дату в базе MySQL записывают не в поле Date, а в поле типа Int, и дата записывается в секундах. И чтобы получить вывод в читабельном варианте, можно использовать в запросе следующую конструкцию.
К примеру, дата у нас записана в поле mydate, таблицы users типа INT, тогда наш запрос будет таким:
1 2 3 |
SELECT DATE_FORMAT(FROM_UNIXTIME(mydate),'%d.%m.%Y') FROM users; |
Еще есть одна рекомендация, это установка временной зоны, чтобы время соответствовало вашему региону
1 2 3 4 |
date_default_timezone_set( 'Europe/Kiev' ); date_default_timezone_set( 'Europe/Moscow' ); |