где пункт с часовыми поясами - PullRequest
2 голосов
/ 08 мая 2011

Я пишу предложение where для запроса linq-to-sql.Допустим, имя столбца - AppointTime, которое хранится в часовом поясе GMT.Запрос, который я пишу, является динамическим, и пользовательский интерфейс позволяет пользователю выбирать встречи, установленные сегодня, вчера, 2 дня назад, 3, 5, 10, 30, 60, 90 дней назад.

У меня естьчасовой пояс пользователя в десятичном формате (т. е. -9,0 для времени США по стандартному тихоокеанскому времени).

Как лучше всего написать предложение where, чтобы пользователь, который хочет увидеть встречи, которые он установил 2 дня назад, появляется в запросенабор результатов.

1 Ответ

1 голос
/ 08 мая 2011

Как-то так?

int days = 2; // set by UI?
var upcoming =
    from appointment in dc.Appointments
    where appointment.AppointTime.AddHours(userTZ) < DateTime.UtcNow.AddDays(days)
          && appointment.AppointTime > DateTime.UtcNow 
    orderby appointment.AppointTime ascending
    select appointment;

Признаюсь, мне не совсем ясно, какую именно информацию вы пытаетесь получить ... но, надеюсь, она должна содержать достаточно подсказок, чтобы написать запрос, который вам нужен,Помните две вещи - функции Addx() в DateTime могут принимать отрицательное значение для вычитания;и времена в будущем больше, чем времена в прошлом, при сравнении двух DateTimes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...