Abp 修改默認的日期時間格式

abp默認是不使用mvc的時間格式,所以直接在AddMvc修改DateFormatString是不會生效的。需要先啓用mvc時間格式。Configuration.Modules.AbpAspNetCore().UseMvcDateTimeFormatForAppServices = true;

可以在任意一個項目的module的PreInitialize()方法中配置,不過還是推薦在Host項目或者MVC的module中配置,就是startup設置的DateFormatString在哪個項目就在哪個項目的module中配置。

這個更新是abp 3.8.1之後加的,之前的版本還是得用自定義ContractResolver的醜陋辦法

show code

xxWebHostModule.cs

public override void PreInitialize()
{
    Configuration.Modules.AbpWebCommon().MultiTenancy.DomainFormat = _appConfiguration["App:ServerRootAddress"] ?? "http://localhost:22742/";
    Configuration.Modules.AspNetZero().LicenseCode = _appConfiguration["AbpZeroLicenseCode"];
    Configuration.Modules.AbpAspNetCore().UseMvcDateTimeFormatForAppServices = true;//就是這句,使用mvc時間格式
}

需要using Abp.AspNetCore.Configuration;

 

然後是startup.cs

ConfigureServices()方法裏第一句

//MVC
            services.AddMvc(options =>
            {
                options.Filters.Add(new CorsAuthorizationFilterFactory(DefaultCorsPolicyName));
            })
            .AddJsonOptions(options => options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss zz")
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

重點是.AddJsonOptions(options => options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss zz")

然後隨便找個controller寫個獲取時間的方法

public class DateLocal
    {
        public DateTimeOffset DateTimeOffset { get; set; }

        public DateTime DateTime { get; set; }

        public DateTimeOffset Local { get; set; }
    }
[HttpGet]
        public DateLocal GetLocalTime()
        {
            return new DateLocal
            {
                DateTimeOffset = DateTimeOffset.Now,
                DateTime = DateTime.Now,
                Local = DateTimeOffset.Now.ToLocalTime(),
            };
        }

生效

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章