在Angular 2中如何使用pipe道格式化date为dd / MM / yyyy?
我正在使用datepipe道来格式化我的date,但我只是不能得到确切的格式,我想要没有解决方法。 我是错误地理解pipe道还是不可能?
//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视图
pipe道date格式错误在Angular 2.0.0-rc.2中修复, 这个Pull请求 。
现在我们可以按照常规的方式:
{{valueDate | date: 'dd/MM/yyyy'}}
例子:
当前版本:
Plunker Angular 5.x
下一个版本:
Plunker Angular 5.xx
旧版本:
Plunker Angular 2.x
Plunker Angular 4.x
更多信息在文档
DatePipe
从angular / common导入DatePipe,然后使用下面的代码:
var datePipe = new DatePipe(); this.setDob = datePipe.transform(userdate, 'dd/MM/yyyy');
其中userdate将是您的datestring。 看看这是否有帮助。
记下date和年份的小写字母:
d- date M- month y-year
你可以通过一个简单的自定义pipe道来实现这一点。
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 }}
使用自定义pipe道的优点是,如果您想要将来更新date格式,则可以去更新自定义pipe道,并且将反映每个位置。
自定义pipe道示例
当我需要使用date出于任何原因时,我总是使用Moment.js。
尝试这个:
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') } }
并认为:
<p>{{ date | formatDate }}</p>
我正在使用这个临时解决scheme:
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'); } } }
唯一的工作对我来说是从这里启发: https : //stackoverflow.com/a/35527407/2310544
对于纯日/月/年,这对我来说,有棱angular的2testing版16:
{{ myDate | date:'d'}}/{{ myDate | date:'MM'}}/{{ myDate | date:'y'}}
我认为这是因为语言环境硬编码到DatePipe
。 看到这个链接:
而且现在没有办法通过configuration来更新这个区域设置。
你也可以用这些东西来用momentjs。 Momentjs最好是在JavaScript中parsing,validation,操作和显示date。
我从Urish使用这个pipe道,对我来说工作得很好:
https://github.com/urish/angular2-moment/blob/master/src/DateFormatPipe.ts
在args参数中,您可以将date格式设置为:“dd / mm / yyyy”
- angular2 rc.5自定义input,没有值的访问器用于未指定名称的表单控件
- 组件之间的angular度共享服务不起作用
- 如何testing一个元素是否使用了量angular器的类?
- Angular2 http间隔
- 如何用Jasmine为私有方法编写Angular 2 / TypeScript的unit testing
- 将所有db中的特定模式授予PostgreSQL中的组angular色
- Angular 2:是否可以从组件类访问模板引用variables?
- toBe(true)vs toBeTruthy()vs toBeTrue()
- Angular2路由器错误:无法find主要sockets加载“主页”