Проблема часового пояса при рендеринге в MVC - PullRequest
0 голосов
/ 24 мая 2019

Я работаю над требованием, при котором я сохраню значение даты отправки клиента.Работает отлично.Но проблема в том, что когда я получаю эти данные, относящиеся к клиенту, и отображаю их в пользовательском интерфейсе, дата отправки отображается неверно.Предположим, что если я сохраню его как 01.01.2009, он будет отображаться как 31.12.2008 23:56.Это происходит только когда я меняю часовой пояс.В моем местном часовом поясе это работает отлично.Но когда я изменяю его на другой часовой пояс, он отображается так же, как указано выше, или какое-то другое значение, основанное на часовом поясе.

Я использую Asp.Net MVC, C # .Net.Я отладил приложение и проверил, что дата, возвращаемая из базы данных, является идеальной, а именно 01.01.2009, 12:00.Но когда это отображается, отображается неправильное значение.

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

<div class="form-group margin-top-10">
    @ProjectHolder.LayoutHForm(new { @class = "v-split-4" }, null,
    x => x.mdl.FullName,
    x => x.mdl.SRNumber,
    x => x.mdl.DateOfSubmission,
    x => x.mdl.IsMale,
    x => x.mdl.EmailAddress)                    
</div>

1 Ответ

0 голосов
/ 24 мая 2019

Браузер отображает время на основе своего понимания часового пояса. Так что он конвертирует вашу дату в часовой пояс, который обнаруживает ваш браузер. Во-первых, убедитесь, что вы храните свое время в формате UTC. Теперь, когда вы отображаете свое время, а не просто отрисовываете необработанное время, преобразуйте его, используя строку формата даты или доступные методы. Это должно отображать точное время на основе часового пояса. Вы можете использовать такие методы, как ToShortDateString или просто DateValue.ToString ("dd-mm-yyyy") или любую строку формата, подходящую для вашего случая.

...