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>