Локальное время и дата рождения или зачем UTC

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

В мире программирования уже давно введены стандарты мирового и локального времени и процедуры преобразования между ними. Однако для обычных людей это все ново и они не обращают на это внимание. В результате дата рождения и другие даты могу “съехать” относительно того, что у вас записано в паспорте. Поэтому необходимо более щепетильно подходить к данным времени перед внесением их, особенно в блокчейн. Давайте разберемся

Пример

У вас в паспорте записана дата рождения например 1990-05-05 при этом также указывается место рождения. По нему можно определить местное время и сдвиг к мировому времени.

Если не обращать внимание на сдвиг в мировому времени, то программное обеспечение само поставить сдвиг по локальному времени у вас на устройстве, с которого вы вводите дату рождения, и может получиться так, что:

  1. Вы родились во Владивостоке в 23 часа ночи - то есть UTC+10, а по Москве это минус 7 часов (московское время - это сдвиг UTC+03),

  2. А заполняете форму своей персоны, например, находясь в Москве - в результате программное обеспечение на вашем локальном устройстве (например мобилка, веб-сайт, полная нода блокчейн Erachain) подставит UTC+03

  3. Точное время рождения вы не ставите и вместо вас его ставит ваше устройство как 00:00.

  4. В результате в блокчейн Erachain ваша дата рождения будет такая 1990-05-05 в 00:00 UTC+03

При этом если вы посмотрите дату рождения в международном стандарте, то получится что вы родились на день раньше: 1990-05-04 в 21:00.

Математически все верно, но по “человечески” не совсем!

Теперь если вы находитесь в Москве или Владивостоке, то день рождения (5=е число) не изменится даже с учетом применения локального сдвига.

Однако, если вы например находитесь в Европе, то ваша дата рождения станет 4-е число!

Это можно исправить если в поле где будет отображаться ваша дата рождения принудительно ввести смещение UTC+03.

Пути решения

  1. При вводе важных дат обращать внимание на точное время до минут и на локальный сдвиг в международном стандарте UTC, а не полагаться на ваше локальное время, которое выставит ваше устройство (с которого вы вводите дату и время), и которое может не совпадать с нужным смещением, так как действие тогда происходило в другой местности с другим временным сдвигом. То есть нужно всегда вводить свой UTC, который соответствует нужной местности и точное время до минут.

  2. При выводе даты и времени всегда обращать внимание на сдвиг по времени на том устройстве на котором вы его видите. Так в Японии у вас дата рождения будет 1990-05-05, а в Европе уже 1990-05-04, так как устройство которое будет производить отображение само подставит локальный сдвиг и преобразует дату в международном формате в локальное время. Поэтому обращайте внимание на UTC так же при выводе ваших данных и пересчитывайте время “в уме” или задайте UTC при выводе, если есть такая возможность.

Источник: https://habr.com/ru/post/563596/


Интересные статьи

Интересные статьи

Я – выскочка. По крайней мере, так я себя иногда ощущаю. Закончив второй курс политологии и журналистики в университете, я увидел американский рейтинг профессий по уровню...
Каждый разработчик делал пет-проект, который так и не увидел свет. У меня таких проектов набралась чёртова дюжина, а на этой неделе я был близок к тому, чтобы пополнить список неудач ...
Атлас запустил новый продукт — Полный геном. Теперь мы можем исследовать не только отдельные точки в геноме, как в генетическом тесте, но и прочитать всю последовательность нуклеотидов генома. В ...
Устраивать конкурсы в инстаграме сейчас модно. И удобно. Инстаграм предоставляет достаточно обширный API, который позволяет делать практически всё, что может сделать обычный пользователь ручками.
В последнее время интервалы (ranges), которые должны войти в стандарт C++20, довольно много обсуждают, в том числе и на Хабре (пример, где много примеров). Критики интервалов хватает, поговариваю...