How to format nodatime date string globally in asp.net core 2.1?

Currently I am trying to use the JsonFormatters for serializing string in ISO 8601 spec. format in my start up config. but could not get it to work.

my Startup Config is as following,

services.AddMvcCore(
  (options) => {
   options.SslPort = 44321;
   options.Filters.Add(new RequireHttpsAttribute());
  }
 )
 .AddJsonFormatters(jsonSerializerSettings => {
  jsonSerializerSettings.DateParseHandling = DateParseHandling.None;
  jsonSerializerSettings.DateFormatString = "yyyy-MM-ddTHH:mm:ss.fffZ";

 })
 .AddApiExplorer()
 .AddJsonOptions(options => {
  options.AllowInputFormatterExceptionMessages = false;
  options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
 })
 .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
 .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
 .AddDataAnnotationsLocalization();

I also tried ServiceStackText which is mentioned in the documentation but that did not work either,

 NodaSerializerDefinitions.LocalTimeSerializer.ConfigureSerializer();
 DateTimeZoneProviders.Tzdb
  .CreateDefaultSerializersForNodaTime()
  .ConfigureSerializersForNodaTime();

I always keep getting the following format,

i.e. for LocalDate serialization,

{
"patientDob": "Thursday, June 15, 2017",
}

How can I configure the string ISO 8601 spec. formatting for Nodatime date types globally?

my model,

{
public LocalDate patientDob { get; set; }
}

and my view model/api resource is

{
public string patientDob { get; set; }
}
Jon Skeet
people
quotationmark

This is the problem, in your controller:

res.NodaLocalDateString = apiResource.NodaLocalDate = nodaModel.NodaLocalDate.ToString ();

You're not converting a LocalDate into JSON at all; you're converting a string into JSON, and you're obtaining that string by calling LocalDate.ToString().

Change your API resource to have a LocalDate property instead of a string property, so that the conversion is done by Json.NET instead of by you calling ToString().

people

See more on this question at Stackoverflow