Сохранение даты и даты и времени в базе данных - PullRequest
0 голосов
/ 07 августа 2020

Есть случай, когда нам нужно сохранить дату в базе данных. Речь идет об облачном приложении, сделанном на ядре. net, которое представляет собой веб-API. Существует веб-интерфейс пользовательского интерфейса, в котором пользователи могут выбирать даты.

API работает с UT C DateTime. Каждый объект DateTime преобразуется в UT C при достижении любой конечной точки. Таким образом, 2020-8-7T10:00:00+0200 преобразуется в 2020-8-7T08:00:00Z, а затем дата UT C сохраняется в базе данных. В большинстве случаев это неплохое рабочее решение.

Однако есть один случай, который немного сбивает с толку. Если мы сохраняем только дату (нас не интересует время), то это выглядит так: 2020-08-07T00:00:00+0200, а затем в DB 2020-08-06T22:00:00.

Мой вопрос: не заботимся ли мы о время, когда мы должны сохранять дату как UT C, как во втором примере, поэтому дата в базе данных будет в основном за день до этого? Или просто сохраните 2020-08-07T00: 00: 00?

1 Ответ

0 голосов
/ 07 августа 2020

Мировым временем не следует манипулировать, в этом весь смысл его преобразования в UT C, так что оно глобально универсальное. Я бы оставил его как «накануне», потому что, если он вам понадобится, вы захотите преобразовать его обратно в ваше местное время.

Я не знаю, каков ваш дизайн. Если вы посмотрите на дату, когда что-то было добавлено, и вас не волнует время, вам не нужно преобразовывать его в ut c. Вы можете добавить его так, как оно есть, или установить время всегда как полночь:

var date = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, 0, 0, 0);

Если вам по какой-то причине нужно преобразовать его в ut c (когда время не измеряется), вы могли бы раньше преобразование в ut c установите время на 2:00 ночью:

DateTime dateTime = new DateTime(2020, 08, 07);
var date = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, 2, 0, 0);
date = date.ToUniversalTime();

Но вы должны учитывать зимние и летние изменения для вашей страны

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