如何在 ASP.NET Core 2.1 中全局格式化 NodaTime 日期字符串?
How to format NodaTime date string globally in ASP.NET Core 2.1?
目前,我正在尝试使用 JsonFormatters
序列化 ISO 8601
规范中的字符串。我的启动配置中的格式,但无法使其工作。
我的启动配置如下:
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();
我也试过ServiceStackText which is mentioned in the documentation,但也没用。
NodaSerializerDefinitions.LocalTimeSerializer.ConfigureSerializer();
DateTimeZoneProviders.Tzdb
.CreateDefaultSerializersForNodaTime()
.ConfigureSerializersForNodaTime();
我不断收到以下格式,
即对于 LocalDate
序列化:
{
"patientDob": "Thursday, June 15, 2017",
}
如何配置字符串 ISO 8601
规范。 NodaTime
全局日期类型的格式设置?
我的模型,
{
public LocalDate patientDob { get; set; }
}
和我的观点model/API资源:
{
public string patientDob { get; set; }
}
这是问题所在,在您的控制器中:
res.NodaLocalDateString = apiResource.NodaLocalDate = nodaModel.NodaLocalDate.ToString ();
您根本没有将 LocalDate
转换为 JSON;您正在将 字符串 转换为 JSON,并且您正在通过调用 LocalDate.ToString()
.
获取该字符串
将您的 API 资源更改为 LocalDate
属性 而不是 string
属性,以便由 [=24] 完成转换=] 而不是你调用 ToString()
.
目前,我正在尝试使用 JsonFormatters
序列化 ISO 8601
规范中的字符串。我的启动配置中的格式,但无法使其工作。
我的启动配置如下:
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();
我也试过ServiceStackText which is mentioned in the documentation,但也没用。
NodaSerializerDefinitions.LocalTimeSerializer.ConfigureSerializer();
DateTimeZoneProviders.Tzdb
.CreateDefaultSerializersForNodaTime()
.ConfigureSerializersForNodaTime();
我不断收到以下格式,
即对于 LocalDate
序列化:
{
"patientDob": "Thursday, June 15, 2017",
}
如何配置字符串 ISO 8601
规范。 NodaTime
全局日期类型的格式设置?
我的模型,
{
public LocalDate patientDob { get; set; }
}
和我的观点model/API资源:
{
public string patientDob { get; set; }
}
这是问题所在,在您的控制器中:
res.NodaLocalDateString = apiResource.NodaLocalDate = nodaModel.NodaLocalDate.ToString ();
您根本没有将 LocalDate
转换为 JSON;您正在将 字符串 转换为 JSON,并且您正在通过调用 LocalDate.ToString()
.
将您的 API 资源更改为 LocalDate
属性 而不是 string
属性,以便由 [=24] 完成转换=] 而不是你调用 ToString()
.