.Net6 JsonResult 格式化时间数据

13 篇文章 2 订阅

.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());
});
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_42199478

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值