如何在角度材料日期选择器中插入点到日期并限制年份?

发布于 2025-01-12 06:27:28 字数 1866 浏览 0 评论 0原文

Angular 材料 datepicker 中的组件:

inputEvent(event, type: number): void {...}
changeEvent(event, type: number): void {...}

newDateStart: Date = null;
endDateStart: Date = null;

模板:

<mat-date-range-input [rangePicker]="picker">
    <input #fromInput matStartDate placeholder="Start Date"
           (dateInput)="inputEvent($event, 0)"
           (dateChange)="changeEvent($event, 0)">
    <input #toInput matEndDate placeholder="End Date"
           (dateInput)="inputEvent($event, 1)"
           (dateChange)="changeEvent($event, 1)">
</mat-date-range-input>

以及 datepicker 的 CustomDateAdapter:

export class CustomDateAdapter extends NativeDateAdapter {

  parse(value: any): Date | null {
    // if ((typeof value === 'string') && (value.indexOf('.') > -1)) {
    if (typeof value === 'string') {
      let str: string[] = [];

      if (value.indexOf('.') > -1) {
        str = value.split('.');
      } else if (value.indexOf(' ') > -1) {
        str = value.split(' ');
      } else if (value.indexOf('-') > -1) {
        str = value.split('-');
      }

      const year = Number(str[2]);
      const month = Number(str[1]) - 1;
      const date = Number(str[0]);

      return new Date(year, month, date);
    } else if ((typeof value === 'string') && value === '') {
      return new Date();
    }
    const timestamp = typeof value === 'number' ? value : Date.parse(value);
    return isNaN(timestamp) ? null : new Date(timestamp);
  }

  getFirstDayOfWeek(): number {
    return 1;
  }
}

日期格式为 05.03.2022,其中 05 - 天,03 - 月,2022 - 年。

可以输入:

  1. “05032022”,在这种情况下我需要添加“.”。插入此字符串以获取“05.03.2022”并将此新字符串插入模板
  2. “05.03.202200”的输入中,在这种情况下,我需要将年份限制为 4 个数字长度

如何在日期中插入点并限制年份角材料日期选择器?

The component in Angular material datepicker:

inputEvent(event, type: number): void {...}
changeEvent(event, type: number): void {...}

newDateStart: Date = null;
endDateStart: Date = null;

The template:

<mat-date-range-input [rangePicker]="picker">
    <input #fromInput matStartDate placeholder="Start Date"
           (dateInput)="inputEvent($event, 0)"
           (dateChange)="changeEvent($event, 0)">
    <input #toInput matEndDate placeholder="End Date"
           (dateInput)="inputEvent($event, 1)"
           (dateChange)="changeEvent($event, 1)">
</mat-date-range-input>

And the CustomDateAdapter for datepicker:

export class CustomDateAdapter extends NativeDateAdapter {

  parse(value: any): Date | null {
    // if ((typeof value === 'string') && (value.indexOf('.') > -1)) {
    if (typeof value === 'string') {
      let str: string[] = [];

      if (value.indexOf('.') > -1) {
        str = value.split('.');
      } else if (value.indexOf(' ') > -1) {
        str = value.split(' ');
      } else if (value.indexOf('-') > -1) {
        str = value.split('-');
      }

      const year = Number(str[2]);
      const month = Number(str[1]) - 1;
      const date = Number(str[0]);

      return new Date(year, month, date);
    } else if ((typeof value === 'string') && value === '') {
      return new Date();
    }
    const timestamp = typeof value === 'number' ? value : Date.parse(value);
    return isNaN(timestamp) ? null : new Date(timestamp);
  }

  getFirstDayOfWeek(): number {
    return 1;
  }
}

The date format is 05.03.2022 where 05 - day, 03 - month, 2022 - year.

One may enter:

  1. "05032022" in this case I need to add "." into this string to get "05.03.2022" and plase this new string into input in the template
  2. "05.03.202200" in this case I need to limit the year by 4 number length

How do I insert dots into date and limit the year in angular material date picker?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心房的律动 2025-01-19 06:27:28

使用输入类型日期,这将负责验证。

<input type="date" (dateChange)="changeEvent($event)">

dateChange(e){
    let date = new Date(e.target.value);
    let month = date.getMonth();
    let day = date.getDate();
    let year = date.getFullYear();
    let formatedDate = month +'.' + day + '.'+ year;

}

use input type date and that will take care of the validations.

<input type="date" (dateChange)="changeEvent($event)">

dateChange(e){
    let date = new Date(e.target.value);
    let month = date.getMonth();
    let day = date.getDate();
    let year = date.getFullYear();
    let formatedDate = month +'.' + day + '.'+ year;

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文