我有一个带 datepicker 的日期函数(使用 Angular 8),但我有一个问题。 例如,当我输入36/04/2020 时,它会以日期05/06/2020保存在数据库中。 我希望当天数超过一个月的天数时,它会在最后一天返回给我(例如,在我的情况下,必须输入30/04/2020 )。 如何解决这个问题,谢谢?

代码.ts:

import { NativeDateAdapter, DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from "@angular/material";

    export class AppDateAdapter extends NativeDateAdapter {

        parse(value: any): Date | null {
            if ((typeof value === 'string') && (value.indexOf('/') > -1)) {
              const str = value.split('/');
              const year = Number(str[2]);
              const month = Number(str[1]) - 1;
              const date = Number(str[0]);
              return new Date(Date.UTC(year, month, date));
              ;
            }
            const timestamp = typeof value === 'number' ? value : Date.parse(value);
            return isNaN(timestamp) ? null : new Date(timestamp);
          }

          createDate(year: number, month: number, date: number): Date {
            return new Date(Date.UTC(year, month, date));
          }

          format(date: Date, displayFormat: Object): string {
            if (displayFormat === 'input') {
              let day: string = date.getUTCDate().toString();
              day = +day < 10 ? '0' + day : day;
              let month: string = (date.getUTCMonth() + 1).toString();
              month = +month < 10 ? '0' + month : month;
              let year = date.getUTCFullYear();
              return `${day}/${month}/${year}`;

            }
            // new Date(date.toDateString()).getUTCDate(); 
            return date.toDateString();

          }

       private _to2digit(n: number) {
           return (n);
           //return ('00' + n).slice(-2);
       } 
    }

    export const APP_DATE_FORMATS =
    {
       parse: {
           dateInput: {month: 'short', year: 'numeric', day: 'numeric'}
       },
       display: {
           // dateInput: { month: 'short', year: 'numeric', day: 'numeric' },
           dateInput: 'input',
           // monthYearLabel: { month: 'short', year: 'numeric', day: 'numeric' },
           monthYearLabel: 'inputMonth',
           dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},
           monthYearA11yLabel: {year: 'numeric', month: 'long'},
       }
    }

#1楼 票数:0

这将为您提供一个月的最后一天 =>

const day = new Date(2020, month + 1, 0)

然后得到日期

day.getDate() it will return 31 for January

最后比较

inputValue = inputValue > day.getDate() ? day.getDate() : inputValue

  ask by ali translate from so

未解决问题?本站智能推荐:

2回复

如何修复日期时间选择器本地化问题

我的日期有问题,例如如果我输入日期18/02/2020 ,则数据库中保存的日期是17/02/2020 22:00:00 !!! 通常是不是时区问题? 如何纠正这个问题,谢谢。如果我想用 UTC 保存日期,该怎么做? 代码 .html :<ng-template #datepicker>
1回复

使用自定义管道更改Datepicker(Angular)中显示的日期格式

默认情况下,日期选择器使用 MM/dd/yyyy 格式,我希望它根据浏览器语言进行设置,例如)如果英语印度那么它应该是 dd/MM/yyyy(在下面的示例中使用) 这是我的自定义日期管道 -> 这是 html 部分 -> 在这里我想更改datepicker的日期中显示的日期值的格式,但该
1回复

对象编号不是Date,Angular2形式,打字稿的实例

我正在使用Angular 2表单。 我在使用日期变量时遇到问题。 为了在日历输入上实现跨浏览器的兼容性,我使用了ng-pick-datetime( https://www.npmjs.com/package/ng-pick-datetime )。 我收到此错误-> 错误TypeE
1回复

输入类型=日期不能在InternetExplorer11中为我的angular7项目工作[关闭]

关闭。 这个问题需要更加集中。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑这篇文章来
1回复

在“dd-mm-yyyy”中转换日期“2018年9月25日星期二”[angular4]

我试图将日期转换为“ dd-mm-yyyy”格式,但没有成功。 香港专业教育学院试图使用this.datePipe.transform(this.filter.offerExpiration,"yyyy-MM-dd")但它不起作用(日期完全不变)。 我能做什么? 感谢您的帮助。
1回复

在Angular2的日期选择器中禁用日期数组

我有两种形式的日历。 一个是开始日期,另一个是结束日期。 我正在使用'ng-pick-datetime'( https://www.npmjs.com/package/ng-pick-datetime )具有跨浏览器日历选择器。 我的目标是阻止从日期0(1970年1月1日)到开始日期日历
1回复

无法使用键盘输入日期

所以我有一个独特的问题,我有一个日期字段。 我使用键盘输入日期,但是当我使用选项卡返回字段时,它不会让我再次输入日期。 我必须使用退格键删除当前日期,然后再次输入日期。 它的 Angular 6 代码,我使用的是单个日期选择器。 要求很简单。 使用键盘输入日期后,我应该能够返回该字段并再次输入日期而
1回复

在用户使用Javascript输入的日期中增加天数

所以我遇到了一个麻烦,试图用Javascript创建日期计算器。 我对Javascript还是很陌生,所以我觉得自己要深入一点,但这只是我要完成的工作的一部分。 这是一个jsfiddle: http : //jsfiddle.net/b52hamw7/2/ 首先,我的HTML表单格式如