Abp/Abp vNext 修改默认的日期时间格式
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(), }; }
生效
Abp vNext
版本
abp vnext 1.1.2
.net core 3.1
除非.net 5,否则应该不会再有啥大的改动了(System.Text.Json替换不了NewtonsoftJon的话)
在HostModule的ConfigureServices方法里加上
1 2 3 4 5 | Configure<MvcNewtonsoftJsonOptions>(options => { options.SerializerSettings.DateFormatString = "r" ; //对类型为DateTime的生效 }); Configure<AbpJsonOptions>(options => options.DefaultDateTimeFormat = "r" ); //对类型为DateTimeOffset生效 |
需要using Volo.Abp.Json 和 Microsoft.AspNetCore.Mvc
和前端交互建议用"r"作为日期格式,即UTC时间,这样前端可以直接new Date(),也可以自行按需替换为"yyyy-MM-dd"等之类的格式字符串
效果如下
其中CreationTime是Abp内置类型CreateAuditedEntityDto的属性,类型是DateTime
BirthDay是自定义属性,类型是DateTimeOffset,可见两个都成功格式化了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~