У меня есть веб-API ASP .Net Core 2.1, который возвращает DateTime в одном из действий своего контроллера. JSON выглядит так:
1965-02-03T00:00:00
Я думаю, это ISO 8601 ...
Поскольку на самом деле это дата рождения, мне бы хотелось, чтобы она не содержала временной составляющей. .Net не имеет типа данных только Date (как и моя базовая база данных MySQL), поэтому я должен использовать тип DateTime. Есть ли способ отформатировать данные JSON, которые поступают к потребляющему клиенту, в ГГГГ-ММ-ДД?
Действие контроллера очень простое:
// GET: api/Persons
[HttpGet]
public IEnumerable<Person> GetPerson()
{
return _context.Persons;
}
И модель Person тоже очень проста:
public partial class Person
{
public int Id { get; set; }
public string Forenames { get; set; }
public string Surname { get; set; }
public string Title { get; set; }
public string IdNumber { get; set; }
public DateTime? DateOfBirth { get; set; }
}

Для настройки Json Serialize в Asp.Net Core вы можете использовать AddJsonOptions с JsonSerializerSettings.
// // Summary: // Gets or sets how System.DateTime and System.DateTimeOffset values are formatted // when writing JSON text, and the expected date format when reading JSON text. // The default value is "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK". public string DateFormatString { get; set; }
services.AddMvc()
.AddJsonOptions(opt => {
opt.SerializerSettings.DateFormatString = "yyyy-MM-dd";
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);