DateTime.Now против DateTime.UtcNow на сервере Azure, на котором размещен мой сайт, и дБ - PullRequest
0 голосов
/ 26 августа 2018

Я некоторое время боролся с UTC и местным временем.У меня есть приложение, которое создает события (классы), и когда хост создает событие (класс), они устанавливают дату и время события.Итак, на стороне сервера я сохраняю как локальное время для события, так и время в формате UTC для этого события.

Но сейчас я все время путаю себя.

Пример: Еслипользователь заходит на страницу хостов, чтобы увидеть все события (классы) хостов, как мне искать события хоста, если в запросе используется время даты, а пользователь, посещающий страницу, отличается от часового пояса хоста.

В настоящее время я делаю что-то вроде этого:

var events = host.Events.Where(j => j.EventDateTime >= DateTime.Now
            && j.EventStatus == EventStatus.Active).ToList()

Но теперь я расстроен из-за DateTime.Now, потому что это дата и время сервера Azure, и этот запрос сравнивает локальныйвремя даты события к времени даты UTC.

Итак, мой вопрос:
Должен ли я попытаться выяснить, что такое время даты UTC, и передать его перед добавлением смещения к DateTime.Now?

Или я должен выполнить запрос, используя время в формате UTC?Что будет примерно так:

var events = host.Events.Where(j => j.UtcEventDateTime >= DateTime.UtcNow
            && j.EventStatus == EventStatus.Active).ToList()

1 Ответ

0 голосов
/ 26 августа 2018

Обратите внимание, что DateTime.Now на сервере означает, что сервер теперь datetime, а не пользователь Now, что может запутать вас, особенно в облаке, когда приложение распределено по нескольким сервисам или когда вы меняете местоположение вашего сервиса.

Всегда рекомендуется сохранять даты в формате UTC, и вы можете добавить к этому смещение, основанное на отображении каждой пользовательской зоны, это обеспечит согласованность ваших данных и их простоту сравнения и фильтрации.

У многих людей были такие же вопросы, как у вас, например, этот хороший: DateTime.Now против DateTime.UtcNow

Также вы можете найти Datetimeoffset другой способ сохранить вашу дату, просто убедитесь, что вы понимаете это очень хорошо, прежде чем добавлять его в действии: DateTime против DateTimeOffset

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