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

在Angular中如何将日期格式从dd/mm/yyyy转换为dd-mm-yyyy

日期格式修改实现方案(dd/mm/yyyy 转 dd-mm-yyyy)

需求参考图:
参考图片

你当前使用的是Angular Material的日期输入组件,按照以下步骤修改即可:

前置依赖安装

如果还没有安装日期适配工具,先执行安装命令:
npm install moment @angular/material-moment-adapter

1. 组件TS文件导入相关依赖

在你的组件ts文件头部添加导入代码:

import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
import { MomentDateAdapter } from '@angular/material-moment-adapter';
import * as moment from 'moment';

2. 自定义日期格式并注入配置

在组件@Component装饰器中新增提供者配置,同时定义自定义格式常量:

// 定义你需要的日期格式规则
export const CUSTOM_DATE_FORMATS = {
  parse: {
    dateInput: 'DD-MM-YYYY',
  },
  display: {
    dateInput: 'DD-MM-YYYY',
    monthYearLabel: 'MMM YYYY',
    dateA11yLabel: 'LL',
    monthYearA11yLabel: 'MMMM YYYY',
  },
};

@Component({
  // 此处保留你原有的组件配置,比如selector、templateUrl、styleUrls等
  providers: [
    { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
    { provide: MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS },
  ],
})
export class YourComponent {
  // 原有组件逻辑
  dateFormat: boolean;

  validateDate() {
    const dateVal = this.memberForm.get('dateOfBirth').value;
    // 空值校验
    if (!dateVal) {
      this.dateFormat = true;
      return;
    }
    // 新增格式合法性校验
    this.dateFormat = !moment(dateVal, 'DD-MM-YYYY', true).isValid();
  }

  ngOnInit() {
    this.validateDate();
  }

  // 提交数据时获取格式化后日期的示例
  onSubmit() {
    if (this.memberForm.valid) {
      const finalDate = moment(this.memberForm.get('dateOfBirth').value).format('DD-MM-YYYY');
      // 此处添加你的表单提交逻辑
    }
  }
}

3. HTML代码调整(可选)

原生type="date"输入框的显示格式会跟随浏览器系统语言变动,如果你需要强制所有环境都显示dd-mm-yyyy格式,可以把input的type改为text,不影响日期选择器的正常使用:

<div fxFlex="calc(25% - 30px)">
  <mat-form-field appearance="outline" class="w-100">
    <mat-label>Date of birth</mat-label>
    <input matInput type="text" [formControlName]="'dateOfBirth'" placeholder="Select entry date" required>
    <mat-error *ngIf="dateFormat">
      <strong>Kindly enter a valid date</strong>
    </mat-error>
  </mat-form-field>
</div>

内容的提问来源于stack exchange,提问作者Revanth Reddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:45:09