Angular 值getDay不是函数类型脚本

Angular 值getDay不是函数类型脚本,angular,typescript,Angular,Typescript,我发现了一个类似的问题,但它没有回答我面临的问题 我正在尝试将日期解析为字符串。这是我的实现 export class DataFormater { formatDDMMMYYY(date: Date): string { return date.getDay().toString() + '/' + date.getMonth().toString() + '/' + date.getFullYear().toString(); } } 但是我得到一个错误

我发现了一个类似的问题,但它没有回答我面临的问题

我正在尝试将日期解析为字符串。这是我的实现

export class DataFormater {

    formatDDMMMYYY(date: Date): string {
        return date.getDay().toString() + '/' + date.getMonth().toString() + '/' + date.getFullYear().toString();
    }

}
但是我得到一个错误,说
date.getDay()不是一个函数
?当我查看文档时,它是一个数字,因此是
.toString()
。有没有人遇到过这种情况,或者找到了更好的方法来实现将日期解析为字符串并输出到所需输出的方法

--------------全面实施----------

日期格式化程序

export class DataFormater {

    constructor(){
        console.log(this.formatDDMMMYYY(new Date))
    }

    formatDDMMMYYY(date: Date): string {
        date = new Date(date);
        return date.getDay().toString() + '/' + date.getMonth().toString() + '/' + date.getFullYear().toString();
    }

}
export class DataFormater {

    constructor(){
        console.log(this.formatDDMMMYYY(new Date))
    }

    formatDDMMMYYY(date: Date): string {
        return date.getDate().toString() + '/' + date.getMonth().toString() + '/' + date.getFullYear().toString();
    }

}

您必须以不正确的格式向函数传递日期

试着这样做:

constructor(){
  console.log(this.formatDDMMMYYY(new Date))
}

formatDDMMMYYY(date: Date): string {
   return date.getDate().toString() + '/' + (date.getMonth()+1).toString() + '/' + date.getFullYear().toString();
}

注意:由于要将id转换为DD/MM/YYYY,请使用
date.getDate()
而不是
date.getDay()

date.getDay()
给出星期几。5对于星期五(星期日表示0)

调用
getDate()
函数的
日期对象可能不是有效的日期对象。所以你可能会出错

一旦发送一个有效的日期对象并检查该功能

例如:

this.formatDDMMMYYY(newdate())

根据问题更新答案:

更改此部分,
新日期(this.fromDate)

this.filter.fromDate=this.dateformatter.formattddmmmyyy(新日期(this.fromDate))

日期格式化程序

export class DataFormater {

    constructor(){
        console.log(this.formatDDMMMYYY(new Date))
    }

    formatDDMMMYYY(date: Date): string {
        date = new Date(date);
        return date.getDay().toString() + '/' + date.getMonth().toString() + '/' + date.getFullYear().toString();
    }

}
export class DataFormater {

    constructor(){
        console.log(this.formatDDMMMYYY(new Date))
    }

    formatDDMMMYYY(date: Date): string {
        return date.getDate().toString() + '/' + date.getMonth().toString() + '/' + date.getFullYear().toString();
    }

}

因为我使用的是
ngbDatepicker
,所以它不是原生的typescript日期。这是解决办法

import {NgbDate} from '@ng-bootstrap/ng-bootstrap';

toDate: NgbDate;
fromDate: NgbDate;
解析日期

    if (this.fromDate != null) {
        this.filter.fromDate = this.dateFormater.formatDDMMMYYY(this.fromDate);
    }
现在是方法

import {NgbDate} from '@ng-bootstrap/ng-bootstrap';

export class DataFormater {

    formatDDMMMYYY(date: NgbDate): string {
        return date.day + '/' + date.month + '/' + date.year;
    }

}

不需要转换字符串和全部。您只需将日期传递给函数:

试试这个:

 constructor() {
    console.log(this.formatDDMMMYYY(new Date()));
  }

  formatDDMMMYYY(date: Date): string {
    return moment().format("DD/MM/YYYY");
  }

向我们显示日期值!你能分享吗stackbiltz@AdritaSharma,它不是必需的“toString()”。如果“总和”中有字符串,则将JavaScript“+”转换为字符串。顺便说一句,我喜欢
('0'+date.getDate()).slice(-2)+“/”+('0'+(date.getMonth()+1)。slice(-2)+“/”+date.getFullYear()
是的……toString不是必需的。只是从他的问题复制过来:)我弄明白了问题所在。非常感谢您的努力@Drew,请根据您的问题检查更新的答案。请检查您的代码,是getDate(),不是getDay()-getDay返回星期几是,因为他需要天数,是
getDay()
根据他的问题Avan,真的不是,getDay返回0如果星期天,1如果星期一。。。,getDate返回monthI发现问题的那天。非常感谢您的努力!!!!
 constructor() {
    console.log(this.formatDDMMMYYY(new Date()));
  }

  formatDDMMMYYY(date: Date): string {
    return moment().format("DD/MM/YYYY");
  }