Я пытаюсь показать состояние открытого или закрытого хранилища на основе временного диапазона, хранящегося в базе данных.найти, если текущее время падает между несколькими диапазонами времени.
Каждый магазин может иметь 2 часы работы
Пример:
09:00 до 11:00 утра и 01:00 вечера до 10:00 вечера
работает для одного времени диапазон:
IEnumerable<Timings> timings = allStore.ToList(); // from database
foreach (var storetime in timings)
{
TimeSpan openSpan = TimeSpan.FromTicks((long)storetime.OpenTime);
TimeSpan openLocalTime = TimeConversions.UTCTimeToLocalTime(openSpan);
DateTime openDatetime = DateTime.Today.Add(openLocalTime);
string openDisplayTime = openDatetime.ToString("hh:mm tt");
.....
TimeSpan closeLocalTime = TimeConversions.UTCTimeToLocalTime(closeSpan);
if ((now > openLocalTime) && (now < closeLocalTime))
{
//Store is Open
}
else
{
//Store is Closed
}
}
несколько диапазонов:
IEnumerable<Timings> timings = allStore.ToList(); // from database
if((timings.Any(now > d=>d.OpenTime))) // can i use Any ?
{
}
table описание.
Любая помощь будет отличной.
Решение должно быть в C#? ИМО было бы лучше написать его непосредственно в SQL вместо того, чтобы получать все время открытия. – martin
Я не понимаю ваш код. Почему 'openLocalTime'' Timespan', а не 'DateTime' (то же самое подходит для близкого времени). Что такое 'TimeConversions.UTCTimeToLocalTime' и какой тип объекта' Timings'? – Philippe
@Philippe, я просто использую тики, как указано [здесь] (http://stackoverflow.com/a/8504020/2218697). Я сохранил тики в базе данных, так как «BigInt» и «TimeConversions.UTCTimeToLocalTime» используется для преобразования UTC привязывается к местному временному интервалу, тайминги - это список таймингов для каждого магазина, я обновил сообщение. надеюсь, это поможет. – stom