.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());
            });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM