zoukankan      html  css  js  c++  java
  • 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方法里加上

    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,可见两个都成功格式化了

  • 相关阅读:
    nodejs设置NODE_ENV环境变量(2)
    CentOS6.8系统安装Node
    mongodb3.X权限配置
    在centos7中添加一个新用户并授权
    CentOS 7.0启用iptables防火墙
    Nginx编译参数大全 configure参数中文详解
    Linux(centos)系统各个目录的作用详解
    CentOS 6.5_X64下安装MongoDB数据库
    vue-cli 发布(译)
    Linux下的crontab定时执行任务命令详解
  • 原文地址:https://www.cnblogs.com/turingguo/p/10653976.html
Copyright © 2011-2022 走看看