el valor getDay no es una función Typescript Angular
Encontré una pregunta similar, pero no respondió al problema que estoy enfrentando.
Estoy intentando convertir una fecha en una cadena. Aquí está mi implementación.
export class DataFormater {
formatDDMMMYYY(date: Date): string {
return date.getDay().toString() + '/' + date.getMonth().toString() + '/' + date.getFullYear().toString();
}
}
¿pero recibo un error que dice date.getDay() no es una función? Cuando miro la documentación, es un número, de ahí el .toString(). ¿Alguien se ha encontrado con esto o ha encontrado una mejor manera de implementar una forma de convertir una fecha a una cadena con un formato deseado?
-------------- Implementación completa ----------
<input class="form-control" placeholder="yyyy-mm-dd"
name="dp" ngbDatepicker #d="ngbDatepicker" [(ngModel)]="fromDate" (keyup)="setFilter()">
en componente
toDate: Date;
fromDate: Date;
constructor(private dateFormater: DataFormater) {
this.toDate = new Date();
this.fromDate = new Date();
}
setFilter() {
if (this.toDate != null) {
console.log(this.toDate + " in toDate...");
this.filter.toDate = this.dateFormater.formatDDMMMYYY(this.toDate);
}
if (this.fromDate != null) {
this.filter.fromDate = this.dateFormater.formatDDMMMYYY(this.fromDate);
}
this.filterEmitter.emit(this.filter);
}
DateFormater
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();
}
}
Respuesta #1
Debes estar pasando la fecha a la función en un formato incorrecto.
Intenta así:
constructor(){
console.log(this.formatDDMMMYYY(new Date))
}
formatDDMMMYYY(date: Date): string {
return date.getDate().toString() + '/' + (date.getMonth()+1).toString() + '/' + date.getFullYear().toString();
}
Demostración Funcional
Nota: Dado que deseas convertir id a DD/MM/AAAA, usa date.getDate() en lugar de date.getDay(). date.getDay() da el día de la semana. 5 para viernes (domingo significa 0)
Respuesta #2
El objeto date sobre el que estás llamando la función getDate() podría no ser un objeto date válido. Por lo tanto, podrías estar recibiendo el error.
Una vez enviado un objeto de fecha válido y verifica esa función,
Ej :
this.formatDDMMMYYY(new Date());Respuesta actualizada, según la pregunta:
Cambia esta parte, new Date(this.fromDate)
this.filter.fromDate = this.dateFormater.formatDDMMMYYY(new Date(this.fromDate));setFilter() {
if (this.toDate != null) {
console.log(this.toDate + " in toDate...");
this.filter.toDate = this.dateFormater.formatDDMMMYYY(this.toDate);
}
if (this.fromDate != null) {
this.filter.fromDate = this.dateFormater.formatDDMMMYYY(new Date(this.fromDate));
}
this.filterEmitter.emit(this.filter);
}
DateFormater
export class DataFormater {
constructor(){
console.log(this.formatDDMMMYYY(new Date))
}
formatDDMMMYYY(date: Date): string {
return date.getDate().toString() + '/' + date.getMonth().toString() + '/' + date.getFullYear().toString();
}
}
