У нас есть два поля from
и to
(типа datetime
), где пользователь может хранить время начала и время окончания командировки, например:
From: 2010-04-14 09:00
To: 2010-04-16 16:30
Таким образом, продолжительность поездки составляет 2 дня и 7,5 часов.
Часто точное время заранее неизвестно, поэтому пользователь вводит даты без времени:
From: 2010-04-14
To: 2010-04-16
Внутренне это сохраняется как 2010-04-14 00:00
и 2010-04-16 00:00
, поскольку именно так поступают большинство современных библиотек классов (например, .net) и баз данных (например, SQL Server), когда вы сохраняете «только дату» в структуре datetime.Обычно это имеет смысл.
Однако при вводе 2010-04-16
в качестве даты to
пользователь явно не означает 2010-04-16 00:00
.Вместо этого пользователь имел в виду 2010-04-16 24:00
, т. Е. Вычисление продолжительности поездки должно вывести 3 days
, а не 2 days
.
. Я могу придумать несколько (более или менее некрасивых) способов решения этой проблемы.(добавьте «23:59» в слой пользовательского интерфейса поля to
, если пользователь не ввел компонент времени; добавьте специальное логическое поле «даты - полные дни»; магазин «2010-04-17 00:00»)в БД, но отображать «2010-04-16 24:00» для пользователя, если компонент времени «00:00»; ...), все имеют свои преимущества и недостатки.Поскольку я предполагаю, что это довольно распространенная проблема, мне было интересно:
- Существует ли "стандартный" наилучший способ ее решения?
- Если нет,испытывали ли вы подобное требование, как вы его решали и каковы были плюсы / минусы этого решения?