Как лучше всего получать данные DateTime через View Models? - PullRequest
2 голосов
/ 20 марта 2019

У меня есть модель просмотра, где одно из свойств - DateTime.Я хочу разрешить отправителю отправлять DateTime в любом часовом поясе.С моей стороны, я хочу преобразовать эту дату и время в UTC, и если информация о часовом поясе не поступила с датой, просто предположить, что это время в формате UTC.

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

Мой бэкэнд работает со всеми датами в UTC, возвращает их в UTC и так же сохраняет.Этот вопрос касается получения «клиентского» ввода и какова лучшая практика принятия даты и ее преобразования в UTC.

Это то, что у меня сейчас

public class MyViewModel
{
    /// <summary>
    /// Start date, in UTC.
    /// </summary>
    [Required]
    [DataType(DataType.Date)]
    public DateTime StartDate { get; set; }
}

А в контроллере:

// Convert to UTC
model.StartDate = model.StartDate.ToUniversalTime();

Полагаю, я мог бы сделать это и в самой модели представления, добавив конструктор.

Как лучше всего получать DateTime входные данные черезПосмотреть модели?В конечном итоге я хочу убедиться, что я получаю UTC.

1 Ответ

0 голосов
/ 20 марта 2019

Если ваше приложение будет использоваться в нескольких часовых поясах, я бы предложил сохранить объект UTC datetime в базе данных.

Обычная практика - преобразовывать этот объект даты и времени UTC в локальную дату и время.

Intput

API должен принимать формат ISO 8601 в качестве ввода , как упомянуто в этом блоге .

предпочитать ISO8601 (гггг-мм-дд'т'чч: мм: ссз), потому что он удобочитаемый и имеет определенный часовой пояс.Нет никакой двусмысленности, если эпоха в секундах или миллисекундах.Строки ISO 8601 кодируются таким образом, чтобы обеспечить надлежащую сортировку и сравнение строк.

Вывод

Я полагаю, вы хотите знать, как веб-API должен возвращатьОбъект DateTime.

По моему мнению, RESTful API должен быть независимым от часового пояса и должен возвращать дату в UTC.

Телефонное приложение / настольное приложение / веб-приложение, которое вызывает этот API, должно нести ответственность за показдаты в правильном формате часового пояса.

Но, как уже говорилось ранее в комментариях, это решение зависит от дизайна вашего приложения.

Надеюсь, это поможет.

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