Date format change angular 2

2020-02-14 06:53发布

问题:

I need to change my date format, the problem is that I can't use moment.js, I need just to transform date from yyyy-mm-dd to dd-mm-yyyy. I use angular v 2.4.0.

回答1:

Use DatePipe pipe

date_expression | date[:format]

in your case

{{ date_expression | date:'dd-MM-yy' }}

How to use the pipe inside the component :

NgModule({
  ....
  providers: [DatePipe]
})

or

@Component({
   ....
  providers: [DatePipe]
})

In you component set it as a date variable

constructor(private datePipe: DatePipe) {
}

ngOnInit() {
    this.date = this.datePipe.transform(new Date(), 'dd-MM-yy');
}


回答2:

You can do it creating custom Pipe. Refer below code. For more info refer DatePipe Documentation.

import { Pipe, PipeTransform } from '@angular/core';
import { DatePipe } from '@angular/common';

@Pipe({
    name: 'customDateFormat',
})
export class customDateFormatPipe implements PipeTransform {
    transform(value: string) {
       var datePipe = new DatePipe("en-US");
        value = datePipe.transform(value, 'dd-mm-yyyy');
        return value;
    }
}

Add custom pipe in html as shown below:

{{currentDate | customDateFormat }}


回答3:

What you can do is create a function like this

function formatDate() {
    let addZeroToLoneFigure = (n) => n.toString().length === 1 ? '0' + n : n.toString();
    let format = 'DD-MM-YYYY';
    let d= new Date();
    format.replace('DD', addZeroToLoneFigure(d.getDate()));
    format.replace('MM', addZeroToLoneFigure(d.getMonth() + 1));
    format.replace('YYYY', addZeroToLoneFigure(d.getFullYear()));
    return format;
}