September 14, 2023

КАК ПРАВИЛЬНО ВЫБРАТЬ ФОРМАТ ДАТЫ И ВРЕМЕНИ В РАЗРАБОТКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Правильный выбор формата даты и времени - это один из непростых вопросов, который стоит перед вами, потому что когда вы проектируете систему, вам надо учесть много критериев.

Какие критерии могут быть?

  1. Разные часовые пояса Например, у вас интернет-магазин, который работает в разных часовых поясах и странах. Магазин использует внутреннюю систему для координации проектов и встреч. Если система использует формат времени, который не учитывает часовые пояса, то при планировании встреч возникают недоразумения из-за разного местного времени для каждого из пользователей.
  2. Корректность данных для выполнения операций Например, у вас банковское приложение, вы отображаете баланс на счету. Если указать некорректный формат даты и времени, то баланс при совершении операции в другом часовом поясе может отобразится некорректно по вашему счету. Более того, это может повлиять на данные для самого банка и тогда компания понесет убытки или может попасть на налоговые штрафы.
  3. Анализ данных Например, в интернет-магазине есть аналитика, которая собирает информацию о покупках покупателей и есть потребность понимать, в какое время суток лучше всего продаются те или иные товары, чтобы их предлагать клиентам. Если вы выберете отправлять только дату, без времени, то столкнетесь с тем, что просто не сможете собрать корреткно аналитику. А магазин в итоге может не получить часть прибыли, поэтому в этом случае правильно собирать данные о датах и времени в формате, учитывающем часы, минуты и секунды (например, "ГГГГ-ММ-ДД ЧЧ:ММ:СС"). Так анализ будет более точным.

Какие форматы даты и времени есть и где используют?

1. ISO 8601 - международный стандарт для представления даты и времени. Он имеет вид "ГГГГ-ММ-ДДТЧЧ:ММ:СС". Преимущество этого формата в том, что он однозначно определяет дату и время, а также поддерживает представление временных зон.

Выглядит это так: "2023-09-14T15:30:00+00:00".

2. UTC – чаще всего рекомендуют работать с временем в формате UTC (координированное всемирное время) внутри программного обеспечения и баз данных. Это позволяет избежать путаницы с часовыми поясами и упростить конвертацию в другие временные зоны.

Выглядит это так: "2023-09-14T15:30:00Z". В этом примере время представлено в формате ISO 8601, но с явным указанием временной зоны UTC, обозначаемой как "Z" (зональное время).

3. Локализация – если вы работаете с интерфейсом, то лучше всего использовать форматы, соответствующие языку и культуре пользователя.

Например, "14 сентября 2023 г." для русскоязычных пользователей и "September 14, 2023" для англоязычных.

4. Базы данных – используют специфические типы данных для даты и времени, предоставляемые системой управления самой БД (например, DATE, DATETIME, TIMESTAMP).

Выглядит это так: "2023-09-14 15:30:00"

5. UNIX TIMESTAMP – время, которое указывается в виде числа в котором находится миллисекунды. Этот формат времени часто используется для меток времени событий, для расчетов временных интервалов или для учета времени создания или модификации ресурсов в REST API.
При этом такой формат также указывает время в UTC. Этот формат очень удобен, если надо понять сколько времени прошло между двумя датами при помощи вычитания одной цифра от другой.

Выглядит это так: 1471300214792

Что СА должен знать и учитывать при работе с датой и временем?

1. Точность и разрешение – надо понимать, насколько точно и с каким разрешением нужно представлять дату и время.

Например, в некоторых приложениях секунды могут быть критически важны, в то время как в других достаточно точности в днях.

2. Временные зоны – надо учитывать разные часовые пояса и понимать вы будете использовать и хранить данные в UTC или в локальных временных зонах.

3. Формат вывода – надо понимать, как должны отображаться даты и времена пользователю. Это включает в себя форматы даты, времени и языковую локализацию.

4. Обработка ошибок – при определении требований не забудьте учесть возможность ошибок, связанных с неправильным форматом даты и времени.

Например, как ваше приложение будет обрабатывать и сообщать об этих ошибках?

Дополнительные полезные материалы:

Конвертер даты и времени из разных форматов – https://www.epochconverter.com/

Статья про дату и время – https://habr.com/ru/articles/278527/