Jak sformatować datę jako dd / MM / RRRR w formacie Angular 2 za pomocą rur?

Używam rury daty do sformatowania daty, ale po prostu nie mogę uzyskać dokładnego formatu, który chcę bez obejścia. Czy źle Rozumiem rury, czy po prostu nie jest to możliwe?

//our root app component
import {Component} from 'angular2/core'

@Component({
  selector: 'my-app',
  providers: [],
  template: `
    <div>
      <h2>Hello {{name}}</h2>
      <h3>{{date | date: 'ddMMyyyy'}}, should be 
      {{date | date: 'dd'}}/{{date | date:'MM'}}/{{date | date: 'yyyy'}}</h3>

    </div>
  `,
  directives: []
})
export class App {
  constructor() {
    this.name = 'Angular2'
    this.date = new Date();
  }
}

Plnkr view

Author: Fernando Leal, 2016-03-02

12 answers

Błąd formatu daty rury naprawiony w Angular 2.0.0-rc.2, this Pull Request .

Teraz możemy zrobić konwencjonalny sposób:

{{valueDate | date: 'dd/MM/yyyy'}}

Przykłady:

Aktualna Wersja:

Plunker Kątowy 6.x. x


Stare Wersje:

Plunker Kątowy 2.x

Plunker Kątowy 4.x


Więcej informacji w dokumentacji DatePipe

 260
Author: Fernando Leal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-13 11:28:44

Importuj DatePipe z angular / common, a następnie użyj poniższego kodu:

var datePipe = new DatePipe();
    this.setDob = datePipe.transform(userdate, 'dd/MM/yyyy');

Gdzie userdate to będzie twoja randka. Zobacz, czy to pomoże.

Zanotuj małe litery Dla daty i roku:

d- date
M- month
y-year

EDIT

Musisz przekazać locale string jako argument do DatePipe, w najnowszej wersji angular. Testowałem w angular 4.x

Na Przykład:

var datePipe = new DatePipe('en-US');
 60
Author: Prashanth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-18 00:01:45

Można to osiągnąć za pomocą zwykłej rury niestandardowej.

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

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


{{currentDate | dateFormatPipe }}

Zaletą używania niestandardowego potoku jest to, że jeśli chcesz zaktualizować format daty w przyszłości, możesz przejść do aktualizacji niestandardowego potoku i będzie on odzwierciedlał każde miejsce.

Niestandardowe przykłady rur

 14
Author: Prashobh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-04 14:07:16

Zawsze używam chwili.js, kiedy muszę używać dat z jakiegokolwiek powodu.

Spróbuj tego:

import { Pipe, PipeTransform } from '@angular/core'
import * as moment from 'moment'

@Pipe({
   name: 'formatDate'
})
export class DatePipe implements PipeTransform {
   transform(date: any, args?: any): any {
     let d = new Date(date)
     return moment(d).format('DD/MM/YYYY')

   }
}

I w widoku:

<p>{{ date | formatDate }}</p>
 11
Author: Oriana Ruiz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-15 14:02:13

Używam tego tymczasowego rozwiązania:

import {Pipe, PipeTransform} from "angular2/core";
import {DateFormatter} from 'angular2/src/facade/intl';

@Pipe({
    name: 'dateFormat'
})
export class DateFormat implements PipeTransform {
    transform(value: any, args: string[]): any {
        if (value) {
            var date = value instanceof Date ? value : new Date(value);
            return DateFormatter.format(date, 'pt', 'dd/MM/yyyy');
        }
    }
}
 10
Author: Deepak rao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-13 10:20:17

/ Align = "left" / : https://stackoverflow.com/a/35527407/2310544

Dla czystego dd/MM / RRRR, to działało dla mnie, z angular 2 beta 16:

{{ myDate | date:'d'}}/{{ myDate | date:'MM'}}/{{ myDate | date:'y'}}
 3
Author: Johan Chouquet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:45

Myślę, że to dlatego, że locale jest zakodowane na twardo w DatePipe. Zobacz ten link:

I nie ma możliwości zaktualizowania tego ustawienia locale przez konfigurację w tej chwili.

 3
Author: Thierry Templier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-05 16:52:03

Możesz również użyć momentjs do tego rodzaju rzeczy. Momentjs jest najlepszy do parsowania, walidacji, manipulowania i wyświetlania dat w JavaScript.

Użyłem tej fajki od Urish, która mi dobrze działa:

Https://github.com/urish/angular2-moment/blob/master/src/DateFormatPipe.ts

W parametrze args możesz wpisać format daty: "dd / mm / RRRR"

 1
Author: Doek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-20 20:44:43

Jeśli ktoś szuka czasu i strefy czasowej, to jest dla Ciebie

 {{data.ct | date :'dd-MMM-yy h:mm:ss a '}}

Dodaj z dla strefy czasowej na końcu daty i formatu czasu

 {{data.ct | date :'dd-MMM-yy h:mm:ss a z'}}
 1
Author: ULLAS K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-13 07:22:11

Date pipes nie zachowuje się poprawnie w Angular 2 z maszynopisem dla przeglądarki Safari na MacOS i iOS. Ostatnio miałem do czynienia z tym problemem. Musiałem użyć moment js tutaj do rozwiązania problemu.

 0
Author: Nikhil Bhalwankar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-07 18:29:12

Możesz znaleźć więcej informacji na temat rury daty tutaj , takich jak formaty.

Jeśli chcesz użyć go w swoim komponencie, możesz po prostu zrobić

pipe = new DatePipe('en-US'); // Use your own locale

Teraz możesz po prostu użyć metody transformacji, która będzie

const now = Date.now();
const myFormattedDate = this.pipe.transform(now, 'short');
 0
Author: yushin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-04 12:47:53

Jeśli ktoś może wyświetlić datę z czasem w AM lub PM w angular 6 to jest to dla Ciebie.

{{date | date: 'dd/MM/yyyy hh:mm a'}}

Wyjście

Tutaj wpisz opis obrazka

Predefiniowane opcje formatu

Przykłady są podane w EN-US locale.

'short': equivalent to 'M/d/yy, h:mm a' (6/15/15, 9:03 AM).
'medium': equivalent to 'MMM d, y, h:mm:ss a' (Jun 15, 2015, 9:03:01 AM).
'long': equivalent to 'MMMM d, y, h:mm:ss a z' (June 15, 2015 at 9:03:01 AM GMT+1).
'full': equivalent to 'EEEE, MMMM d, y, h:mm:ss a zzzz' (Monday, June 15, 2015 at 9:03:01 AM GMT+01:00).
'shortDate': equivalent to 'M/d/yy' (6/15/15).
'mediumDate': equivalent to 'MMM d, y' (Jun 15, 2015).
'longDate': equivalent to 'MMMM d, y' (June 15, 2015).
'fullDate': equivalent to 'EEEE, MMMM d, y' (Monday, June 15, 2015).
'shortTime': equivalent to 'h:mm a' (9:03 AM).
'mediumTime': equivalent to 'h:mm:ss a' (9:03:01 AM).
'longTime': equivalent to 'h:mm:ss a z' (9:03:01 AM GMT+1).
'fullTime': equivalent to 'h:mm:ss a zzzz' (9:03:01 AM GMT+01:00).

Link Referencyjny

 -1
Author: Ahmer Ali Ahsan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-17 21:31:16