Как мне сериализовать Datetime в строку в таблице AspNetUserTokens в ASP.NET Core 2.0? - PullRequest
0 голосов
/ 27 мая 2019

Когда я использую OAuth2 в ASP.NET Core, промежуточное ПО преобразует дату и время в строку так, как выглядит результат

2019-05-27T13: 07: 49.0000000 + 00: 00

Я обновляю токены доступа вручную и хочу повторить это поведение.Есть ли какой-либо определенный метод для использования для сериализации значения DateTime в строку для последующей записи в таблицу AspNetUserTokens?

Я знаю, что могу использовать DateTime.ToString и создать форматирование путем анализа 2019-05-27T13: 07: 49.0000000 + 00: 00 строка, но я бы предпочел использовать что-то более элегантное и не зависеть от конкретных деталей формата.Т.е. в случае, если завтра они что-то изменят в формате, я буду использовать вызов более высокого уровня, который останется совместимым с измененной реализацией.

На самом деле, я вижу, что значение expires_at уже "2019-05-27T13: 07: 49.0000000 + 00: 00 "строка в tokens в googleOptions.Events.OnCreatingTicket

googleOptions.Events.OnCreatingTicket = ctx =>
    {
        List<AuthenticationToken> tokens = ctx.Properties.GetTokens().ToList();

        return Task.CompletedTask;
    };

Таким образом, эта сериализация выполняется даже до помещения данных в базу данных.Мне нужно выяснить, как они это делают и использовать один и тот же вызов (если это возможно).

1 Ответ

2 голосов
/ 27 мая 2019

Этот формат представляет собой «Шаблон даты / времени в оба конца» :

var date = DateTime.Now;
Console.WriteLine(date.ToString("o")); // 2019-05-27T14:34:02.8029466+02:00

Поскольку этот формат очень многословен, хотя и совместим с ISO 8601 и стабилен во всех локалях, он очень хорошо подходит для сериализации дат и времени с максимальной точностью.

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