¿Cómo puedo enviar la fecha actual a la API usando mecanografiado en un formato específico (DateTime) cuando envío la fecha a la API? Se envía en este formato, así que recibí el error.

Mi código ts:

date: Date;
constructor( private dataStorageService: DataStorageService) {
    this.date = new Date();
}
onSubmit(Message , form : FormGroup){
    let newMsg = {
        username: Message.username,
        header: Message.header,
        content: Message.content,
        file: Message.file
    }
  this.dataStorageService.postMessage(newMsg, this.Id , this.date).subscribe(data => {
      console.log('done');
      console.log(this.date);
      }, error => {
          console.error("Error saving jobs!");
      })
}

http://api.azharcouncil.com/api/ notification / PostNotification? user_id = 15 & Header = hj & Content = hjh & File_Path = null & date = Wed% 20Nov% 2015% 202017% 2010: 44: 56% 20GMT + 0200% 20 (Egypt% 20Standard% 20Time)

Entonces mi solicitud no es válida debido al formato de fecha ...

1
Aya Abdelaziz 15 nov. 2017 a las 11:59

2 respuestas

La mejor respuesta

Aquí está la respuesta completa a su pregunta.

  1. Importe el DatePipe desde el módulo principal y proporcione eso a su módulo principal en main.module.ts en su matriz de proveedores como se indica a continuación:

    import {DatePipe} from '@angular/common';    
    providers: [DatePipe]
    
  2. Úselo en su archivo ts con estos métodos, también importe DatePipe desde @ angular / common en su archivo ts también.

    import {DatePipe} from '@angular/common';
    
  3. Luego, en su constructor, inicialice esto:

    constructor(private _http: HttpClient, public datepipe: DatePipe) { }
    
  4. Ahora use estos métodos para obtener el formato de fecha correcto:

    let myDate = new Date(); 
    console.log(this.datepipe.transform(myDate, 'yyyy-mm-dd'));
    someDateVar = this.datepipe.transform(myDate, 'yyyy-mm-dd');
    
  5. Ahora se puede usar someDateVar para enviarlo al servidor que tiene el formato de fecha que necesita. También tenga en cuenta que también puede usar muchos otros formatos de fecha que se proporcionan en la documentación de la tubería de fecha angular.

4
Madis Otenurm 11 may. 2020 a las 09:13

Nosotras podemos lograr esto usando moment.js

Código de muestra

import * as moment from 'moment-timezone'

export enum dateFormats {
    'DMY'= 'DD/MM/YYYY',
    'MDY'= 'MM/DD/YYYY'
}

// converts datestring to date
export const ToDate = (dateString: string, format: string) => new Date(moment(dateString, format))

// converts date to datestring
export const ToDateString = (date: Date, format: string) => moment(date).format(format)

Uso (en componente)

const dateValue = new Date() // Date = Tue Feb 19 2020 12:05:22 GMT+0530 (IST)
const dateString = ToDateString(dateValue, dateFormats.DMY) // dateString = '19/02/2020'
0
Viswa 19 feb. 2020 a las 20:31