HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Вы когда-нибудь задумывались о том, как хранится в компьютере время? В этом уроке мы обсудим, как работают время и дата и где они хранятся.</p>
1 <p>Вы когда-нибудь задумывались о том, как хранится в компьютере время? В этом уроке мы обсудим, как работают время и дата и где они хранятся.</p>
2 <h2>Время</h2>
2 <h2>Время</h2>
3 <p>Как вы знаете, включение и выключение компьютера никак не влияет на часы. Можно сделать вывод, что часы в компьютере работают сами по себе.</p>
3 <p>Как вы знаете, включение и выключение компьютера никак не влияет на часы. Можно сделать вывод, что часы в компьютере работают сами по себе.</p>
4 <p>Это действительно так. Основные часы компьютера -<strong>аппаратные</strong>. Они живут самостоятельной жизнью и имеют свою собственную батарею. При включении компьютер считывает данные этих часов, записывает к себе в память и начинает самостоятельно отсчитывать время. Эти часы называются<strong>системными</strong>. Любое изменение системных часов влияет и на аппаратные.</p>
4 <p>Это действительно так. Основные часы компьютера -<strong>аппаратные</strong>. Они живут самостоятельной жизнью и имеют свою собственную батарею. При включении компьютер считывает данные этих часов, записывает к себе в память и начинает самостоятельно отсчитывать время. Эти часы называются<strong>системными</strong>. Любое изменение системных часов влияет и на аппаратные.</p>
5 <p>В Linux, Unix, MacOS и большинстве других операционных систем системное время представляется в формате<em>Unix Time</em>. Оно определяется как количество секунд, прошедших с этого момента:</p>
5 <p>В Linux, Unix, MacOS и большинстве других операционных систем системное время представляется в формате<em>Unix Time</em>. Оно определяется как количество секунд, прошедших с этого момента:</p>
6 <blockquote><p>00:00</p>
6 <blockquote><p>00:00</p>
7 UTC 1 января 1970 года (четверг)</blockquote><p>Время с этого момента называют "эрой Unix" (<em>Unix Epoch</em>). Unix-время представлено целым числом, которое увеличивается с каждой прошедшей секундой без необходимости вычислений для определения года, месяца, дня, часа или минуты.</p>
7 UTC 1 января 1970 года (четверг)</blockquote><p>Время с этого момента называют "эрой Unix" (<em>Unix Epoch</em>). Unix-время представлено целым числом, которое увеличивается с каждой прошедшей секундой без необходимости вычислений для определения года, месяца, дня, часа или минуты.</p>
8 <p>Конкретная дата в формате Unix Time называется<strong>timestamp</strong>- временной штамп. Например, для получения текущего<em>timestamp</em>в PHP используется функция time():</p>
8 <p>Конкретная дата в формате Unix Time называется<strong>timestamp</strong>- временной штамп. Например, для получения текущего<em>timestamp</em>в PHP используется функция time():</p>
9 <h2>Дата</h2>
9 <h2>Дата</h2>
10 <p>Одна из главных функций по работе с датами в PHP -<a>date()</a>. Она конвертирует<em>timestamp</em>в человекочитаемый формат.</p>
10 <p>Одна из главных функций по работе с датами в PHP -<a>date()</a>. Она конвертирует<em>timestamp</em>в человекочитаемый формат.</p>
11 <p>Первым параметром в эту функцию передается описание формата даты, которое похоже на форматы для функции<a>sprintf()</a>:</p>
11 <p>Первым параметром в эту функцию передается описание формата даты, которое похоже на форматы для функции<a>sprintf()</a>:</p>
12 <p>По умолчанию date() использует текущее время. Но если нужно, ей можно передать конкретный<em>timestamp</em>:</p>
12 <p>По умолчанию date() использует текущее время. Но если нужно, ей можно передать конкретный<em>timestamp</em>:</p>
13 <p>Различных опций форматирования в функции date() - десятки. Все они подробно перечислены на странице документации. Вряд ли стоит их все запоминать, но понимать общий принцип работы - полезно. Все опции могут комбинироваться между собой в любых вариациях:</p>
13 <p>Различных опций форматирования в функции date() - десятки. Все они подробно перечислены на странице документации. Вряд ли стоит их все запоминать, но понимать общий принцип работы - полезно. Все опции могут комбинироваться между собой в любых вариациях:</p>
14 <h2>Функция mktime()</h2>
14 <h2>Функция mktime()</h2>
15 <p>Функция<a>mktime()</a>генерирует<em>timestamp</em>по информации о времени: секундах, часах, минутах и дате:</p>
15 <p>Функция<a>mktime()</a>генерирует<em>timestamp</em>по информации о времени: секундах, часах, минутах и дате:</p>
16 <p>mktime() - многословная функция, в которой каждая часть даты и времени передается как отдельный параметр:</p>
16 <p>mktime() - многословная функция, в которой каждая часть даты и времени передается как отдельный параметр:</p>
17 <h2>Часовые пояса</h2>
17 <h2>Часовые пояса</h2>
18 <p>Одна из самых сложных деталей при работе с датами - часовые пояса (<em>time zones</em>).</p>
18 <p>Одна из самых сложных деталей при работе с датами - часовые пояса (<em>time zones</em>).</p>
19 <p>Вся Земля делится на 24 часовых пояса, так что в соседних поясах время чаще всего отличается на час. Нулевым временем считается<a>всемирное координированное время</a>(UTC). Часовые пояса вокруг земного шара выражаются, как положительное или отрицательное смещение от UTC. Например, в Москве часовой пояс +3.</p>
19 <p>Вся Земля делится на 24 часовых пояса, так что в соседних поясах время чаще всего отличается на час. Нулевым временем считается<a>всемирное координированное время</a>(UTC). Часовые пояса вокруг земного шара выражаются, как положительное или отрицательное смещение от UTC. Например, в Москве часовой пояс +3.</p>
20 <p>Изюминку в этот механизм добавляет переход на летнее и зимнее время. Причем если пояса строго фиксированы, то переход на зимнее и летнее время - прерогатива конкретных государств, которые периодически его вводят или отменяют. Время UTC никогда не переводят, смещения происходят относительно него. Кроме этого, есть еще тысяча и одна проблема.</p>
20 <p>Изюминку в этот механизм добавляет переход на летнее и зимнее время. Причем если пояса строго фиксированы, то переход на зимнее и летнее время - прерогатива конкретных государств, которые периодически его вводят или отменяют. Время UTC никогда не переводят, смещения происходят относительно него. Кроме этого, есть еще тысяча и одна проблема.</p>
21 <p>Главное правило при работе с датами - хранение и сравнение должно производиться в UTC формате. А вот выводить даты лучше в той зоне, в которой живет пользователь.</p>
21 <p>Главное правило при работе с датами - хранение и сравнение должно производиться в UTC формате. А вот выводить даты лучше в той зоне, в которой живет пользователь.</p>
22 <p>Если вам нужно проверить текущую таймзону, можно воспользоваться функцией date_default_timezone_get(). Установить зону функцией date_default_timezone_set().</p>
22 <p>Если вам нужно проверить текущую таймзону, можно воспользоваться функцией date_default_timezone_get(). Установить зону функцией date_default_timezone_set().</p>