Форматирование DateTime в ASP.NET Core 3.0 с использованием System.Text.Json - PullRequest
0 голосов
/ 25 сентября 2019

Я перевожу веб-API с .NET Core 2.2 на 3.0 и хочу использовать новый System.Text.Json.При использовании Newtonsoft я смог отформатировать DateTime с помощью кода ниже.Как я могу сделать то же самое?

.AddJsonOptions(options =>
                {
                    options.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;
                    options.SerializerSettings.DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZ";
                });

1 Ответ

2 голосов
/ 25 сентября 2019

Решено с помощью пользовательского форматера.Спасибо Panagiotis за предложение.

public class DateTimeConverter : JsonConverter<DateTime>
{
    public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        Debug.Assert(typeToConvert == typeof(DateTime));
        return DateTime.Parse(reader.GetString());
    }

    public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
    {
        writer.WriteStringValue(value.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ssZ"));
    }
}


// in the ConfigureServices()
services.AddControllers()
    .AddJsonOptions(options =>
     {
         options.JsonSerializerOptions.Converters.Add(new DateTimeConverter());
     });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...