Re: Выставить максимальное время определенной дате
От: Sinix  
Дата: 17.03.16 12:46
Оценка: 4 (1) +1
Здравствуйте, Venom, Вы писали:

V>tldr: сегодня я узнал что для сабжа можно сделать date.AddDays(1).AddSeconds(-1);


Doing it wrong. Особенно если на вход пришло что-то вроде DateTime.Today.AddTicks(-1);

Для работы с диапазонами дат нужен класс диапазонов с поддержкой открытых/закрытых границ (исключая/включая значение границы). Тогда необходимости в подобных приседаниях нет.
Re: Выставить максимальное время определенной дате
От: Danchik Украина  
Дата: 17.03.16 12:24
Оценка: +1
Здравствуйте, Venom, Вы писали:

V>Извиняюсь за бложик, сначала хотел спросить про выбор макс.времени в отдельной дате, но нашел решение сам. Оставляю пост как есть.



Мы так делали фильтрацию, если я правильно понял чего вы хотите добиться

dateStart >= date && date <= dateEnd

Один день: dateStart == dateEnd
Re[3]: Выставить максимальное время определенной дате
От: Danchik Украина  
Дата: 17.03.16 13:45
Оценка: +1
Здравствуйте, Venom, Вы писали:

V>Здравствуйте, Danchik, Вы писали:


D>>Мы так делали фильтрацию, если я правильно понял чего вы хотите добиться

D>>dateStart >= date && date <= dateEnd
D>>Один день: dateStart == dateEnd

V>Всё правильно, включение границ диапазонов.



Не понимаю в чем проблема. Или вы заведомо решаете что диапазон дат задается c включением Start и End
Или пишете свою поделку, что то типа этого

class DateRange
{
   DateTime Start;
   DateTime Etart;
   bool IncludeStart;
   bool IncludeEnd;
}


Прибавление/удаление тиков, как уже писали заведомо неправильный подход
Re[5]: Выставить максимальное время определенной дате
От: Sinix  
Дата: 17.03.16 14:26
Оценка: +1
Здравствуйте, S_Ivanov, Вы писали:

S_I>Можно еще проще:

У топикстартера проблема с [1;2] vs [1;2), не с ±∞
Выставить максимальное время определенной дате
От: Venom  
Дата: 17.03.16 12:03
Оценка:
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  
Дата: 17.03.16 12:06
Оценка:
Здравствуйте, Venom, Вы писали:

V>tldr: сегодня я узнал что для сабжа можно сделать date.AddDays(1).AddSeconds(-1);


Ну и да, можно вообще .AddTicks(-1) сделать.
Re[2]: Выставить максимальное время определенной дате
От: Venom  
Дата: 17.03.16 13:30
Оценка:
Здравствуйте, Danchik, Вы писали:

D>Мы так делали фильтрацию, если я правильно понял чего вы хотите добиться

D>dateStart >= date && date <= dateEnd
D>Один день: dateStart == dateEnd

Всё правильно, включение границ диапазонов.
Re[2]: Выставить максимальное время определенной дате
От: Venom  
Дата: 17.03.16 13:40
Оценка:
Здравствуйте, Sinix, Вы писали:

V>>tldr: сегодня я узнал что для сабжа можно сделать date.AddDays(1).AddSeconds(-1);

S>Doing it wrong. Особенно если на вход пришло что-то вроде DateTime.Today.AddTicks(-1);

Не, смотри, я контрол для выборки периода, на вход мне пришел вызов функции типа "хочу получить диапазон дат (которые выбирает пользователь) для таких-то входных фильтров".
Т.е. у меня на входе некие данные, исходя из которых я окрашиваю blackout days (т.е. разрешаю выбирать только доступные даты) на календарях стартовой и конечной даты. Про время мне тоже ничего не известно, я тупо выбираю 2 даты: "с", "по".
Т.е. я вполне могу выбрать две одинаковых даты (если доступно только одно одинаковое число на календарях стартовой и конечной дат, то получится именно так) и обработка того, что вторая дата это по сути следующий день за первым, а по факту всё же они равны, обработка этого должна лежать на caller'е, а не на контроле, не на callee.

S>Для работы с диапазонами дат нужен класс диапазонов с поддержкой открытых/закрытых границ (исключая/включая значение границы). Тогда необходимости в подобных приседаниях нет.
Re[4]: Выставить максимальное время определенной дате
От: S_Ivanov Россия  
Дата: 17.03.16 14:09
Оценка:
Можно еще проще:

class Periood
{
    DateTime? Start;
    DateTime? Finish;
}
Re[6]: Выставить максимальное время определенной дате
От: S_Ivanov Россия  
Дата: 18.03.16 06:48
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, S_Ivanov, Вы писали:


S_I>>Можно еще проще:

S>У топикстартера проблема с [1;2] vs [1;2), не с ±∞

Действительно, не туда загнул Пардоньте
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.