tldr: сегодня я узнал что для сабжа можно сделать date.AddDays(1).AddSeconds(-1);
Была следующая проблема с выбором периода дат: если в диапазоне выбора и начальной, и конечной даты есть только 1 день, то он и получается на выходе с временем равным 0:00:00.
Что ломало логику фильтрации по одной из этих дат в при последующем использовании, т.к. на выходе выборщика периода получалось 2 одинаковые даты.
Немаловажный момент: выборщик периода дат выбирает с date1 по date2.
Сначала решил проблему через .AddDays(1) к date2, но это было ошибкой, т.к. date2 далее использовался на представлении и получалась ситуация:
в выборщике взяли период с 12.01 по 12.01, а на представлении с 12.01 по 13.01.
Затем сделал через .AddHours(23).AddMinutes(59).AddSeconds(59), чтобы не ломать вывод данных на представлении.
А потом подсказали вариант из tldr: занятно, не знал что так можно.
А по факту сабжевая ситуация вообще выходит за рамки ответственности контрола выбора периода: он тупо выбирает даты "с" и "по" и логика обработки должна быть в обработчике результата выбора.
Такие дела.
Извиняюсь за бложик, сначала хотел спросить про выбор макс.времени в отдельной дате, но нашел решение сам. Оставляю пост как есть.
Re: Выставить максимальное время определенной дате
Здравствуйте, Venom, Вы писали:
V>Извиняюсь за бложик, сначала хотел спросить про выбор макс.времени в отдельной дате, но нашел решение сам. Оставляю пост как есть.
Мы так делали фильтрацию, если я правильно понял чего вы хотите добиться
dateStart >= date && date <= dateEnd
Один день: dateStart == dateEnd
Re: Выставить максимальное время определенной дате
Здравствуйте, Venom, Вы писали:
V>tldr: сегодня я узнал что для сабжа можно сделать date.AddDays(1).AddSeconds(-1);
Doing it wrong. Особенно если на вход пришло что-то вроде DateTime.Today.AddTicks(-1);
Для работы с диапазонами дат нужен класс диапазонов с поддержкой открытых/закрытых границ (исключая/включая значение границы). Тогда необходимости в подобных приседаниях нет.
Re[2]: Выставить максимальное время определенной дате
Здравствуйте, Danchik, Вы писали:
D>Мы так делали фильтрацию, если я правильно понял чего вы хотите добиться D>dateStart >= date && date <= dateEnd D>Один день: dateStart == dateEnd
Всё правильно, включение границ диапазонов.
Re[2]: Выставить максимальное время определенной дате
Здравствуйте, Sinix, Вы писали:
V>>tldr: сегодня я узнал что для сабжа можно сделать date.AddDays(1).AddSeconds(-1); S>Doing it wrong. Особенно если на вход пришло что-то вроде DateTime.Today.AddTicks(-1);
Не, смотри, я контрол для выборки периода, на вход мне пришел вызов функции типа "хочу получить диапазон дат (которые выбирает пользователь) для таких-то входных фильтров".
Т.е. у меня на входе некие данные, исходя из которых я окрашиваю blackout days (т.е. разрешаю выбирать только доступные даты) на календарях стартовой и конечной даты. Про время мне тоже ничего не известно, я тупо выбираю 2 даты: "с", "по".
Т.е. я вполне могу выбрать две одинаковых даты (если доступно только одно одинаковое число на календарях стартовой и конечной дат, то получится именно так) и обработка того, что вторая дата это по сути следующий день за первым, а по факту всё же они равны, обработка этого должна лежать на caller'е, а не на контроле, не на callee.
S>Для работы с диапазонами дат нужен класс диапазонов с поддержкой открытых/закрытых границ (исключая/включая значение границы). Тогда необходимости в подобных приседаниях нет.
Re[3]: Выставить максимальное время определенной дате
Здравствуйте, Venom, Вы писали:
V>Здравствуйте, Danchik, Вы писали:
D>>Мы так делали фильтрацию, если я правильно понял чего вы хотите добиться D>>dateStart >= date && date <= dateEnd D>>Один день: dateStart == dateEnd
V>Всё правильно, включение границ диапазонов.
Не понимаю в чем проблема. Или вы заведомо решаете что диапазон дат задается c включением Start и End
Или пишете свою поделку, что то типа этого