.Net6 JsonResult 格式化时间数据
创建类 JsonOptionsExt
继承 JsonConverter<DateTime>
请求参数里面的时间数类型据也会被格式化
using System.Text.Json;
using System.Text.Json.Serialization;
namespace Code
{
/// <summary>
/// JsonResult 格式化时间数据
/// 默认 "yyyy-MM-dd HH:mm:ss"
/// </summary>
public class JsonOptionsExt : JsonConverter<DateTime>
{
private readonly string Format;
public JsonOptionsExt(string format= "yyyy-MM-dd HH:mm:ss")
{
Format = format;
}
public override void Write(Utf8JsonWriter writer, DateTime date, JsonSerializerOptions options)
{
writer.WriteStringValue(date.ToString(Format));
}
public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
// 获取时间类型的字符串
var dt = reader.GetString();
if (!string.IsNullOrEmpty(dt))
{
//将日期与时间之间的"T"替换为一个空格,将结尾的"Z"去掉,否则会报错
dt=dt.Replace("T", " ").Replace("Z", "");
//取到秒,毫秒内容也要去掉,经过测试,不去掉会报错
if (dt.Length > 19)
{
dt=dt.Substring(0, 19);
}
return DateTime.ParseExact(dt, Format, null);
}
return DateTime.Now;
}
}
}
使用
builder.Services.AddControllers().AddJsonOptions(options =>
{
//时间格式化响应
options.JsonSerializerOptions.Converters.Add(new JsonOptionsExt());
});