zoukankan      html  css  js  c++  java
  • .net webapi .net core 统一时间返回格式, .net core 2.0, .net core 3.1

    在用 webapi 或者.net core 写接口时, 我们的时间类型往往是 datetime类型的, 如果直接返回, 前端拿到的结果往往这样这种格式 : 

     下面讲怎么改成我们想要的格式

    webapi

    在WebApiConfig.cs文件里的Register方法添加如下代码, 在接口返回的时候要用 ok(object) 这种格式.

                //统一返回时间格式,配置返回的时间类型数据格式
                config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
                    new Newtonsoft.Json.Converters.IsoDateTimeConverter()
                    {
                        DateTimeFormat = "yyyy-MM-dd HH:mm:ss"
                    }
                );

    .net core 2.X

    在 Startup.cs 文件里 的 ConfigureServices的 AddMvc 追加下面的代码

                services.AddMvc().AddJsonOptions(options =>
                {
                    options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
                });

    .net core 3.x

    升级到.net core 3.0 以后,不在默认包含 NewtonsoftJson,而是默认使用System.Text.Json. 

    我们可以定义一个继承 System.Text.Json.Serialization.JsonConverter 的类,实现其Read 和 Write两个抽象方法. 然后再使用

     /// <summary>
        /// 统一时间转换
        /// </summary>
        public class DatetimeJsonConverter : JsonConverter<DateTime>
        {
            /// <summary>
            ////// </summary>
            /// <param name="reader"></param>
            /// <param name="typeToConvert"></param>
            /// <param name="options"></param>
            /// <returns></returns>
            public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
            {
                if (reader.TokenType == JsonTokenType.String)
                {
                    if (DateTime.TryParse(reader.GetString(), out DateTime date))
                        return date;
                }
                return reader.GetDateTime();
            }
    
            /// <summary>
            ////// </summary>
            /// <param name="writer"></param>
            /// <param name="value"></param>
            /// <param name="options"></param>
            public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
            {
                writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));
            }
        }

    然后再 ConfigureServices 里添加

                services.AddMvc().AddJsonOptions((options)=> {
                    options.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter());
                });

  • 相关阅读:
    【转载】《代码大全2》读书笔记之…
    【转载】使用注解和反射实现通用性…
    【转载】使用注解和反射实现通用性…
    23种设计模式的形象比喻&nbsp;(转载)
    SSH&nbsp;整合-&nbsp;3&nbsp;-&nbsp;add&nbsp;-&nbsp;hibernate
    SSH&nbsp;整合-&nbsp;4&nbsp;-&nbsp;add&nbsp;service_servic…
    SSH&nbsp;整合-&nbsp;5&nbsp;-&nbsp;service_serviceImp…
    SSH&nbsp;整合-&nbsp;6&nbsp;-&nbsp;service_serviceImp…
    SSH&nbsp;整合-&nbsp;6&nbsp;-&nbsp;service_serviceImp…
    Hadoop-2.6.0&nbsp;集群的安装配置
  • 原文地址:https://www.cnblogs.com/fancyblogs/p/12936939.html
Copyright © 2011-2022 走看看