You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制ui-datepicker采用yyyy-MM-dd日期格式?配置后仍无效

解决form-control ui-datepicker日期格式化问题

核心原因

jQuery UI Datepicker的日期格式是独立于ASP.NET模型注解的,后端的DisplayFormat只会影响.NET的模型绑定和默认渲染,不会直接控制前端插件的显示格式。插件默认使用MM/dd/yyyy,必须单独配置。

解决步骤

  1. 初始化Datepicker时指定格式
    在页面的JavaScript代码中,为ui-datepicker类的控件初始化时设置dateFormat选项(注意jQuery UI的格式符号和.NET不同:yy对应4位年份,mm对应两位月份,dd对应两位日期):

    $(function() {
      $(".ui-datepicker").datepicker({
        dateFormat: "yy-mm-dd"
      });
    });
    
  2. 避免原生HTML5日期控件冲突
    视图中使用了type="date",原生HTML5日期输入框的显示格式由浏览器决定,且会和jQuery UI Datepicker产生冲突。建议将type改为text:

    <input asp-for="InvoiceUtc" class="form-control ui-datepicker" type="text" placeholder="Start Date" required value="@Model.UserDefaultInvoiceUtc.ToString("yyyy-MM-dd")" />
    
  3. 确保后端绑定格式一致(可选)
    为了保证后端接收日期时格式统一,可以给InvoiceUtc属性也添加DisplayFormat注解:

    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
    public DateTime InvoiceUtc { get; set; }
    

    或者在全局配置中设置默认日期格式(.NET 6+):

    builder.Services.AddControllersWithViews()
        .AddMvcOptions(options =>
        {
            options.FormatterMappings.SetFormatterMappingForType(typeof(DateTime), FormatterMappingSource.Header, "yyyy-MM-dd");
        });
    

内容的提问来源于stack exchange,提问作者A Cameron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:47:41