Jan*_*udt 3 angular-date-format angular
我查询了如何在Angular 2中返回星期数。我没有找到这个问题的答案。我确实在https://docs.angularjs.org/api/ng/filter/date上发现在Angular 1中会是这样的:{{today | date:'w'}}但是这似乎在Angular 2中不起作用。我知道我可以编写一个函数来解决这个问题,但这似乎不切实际。我是否在有关Angular 2的文档中丢失了某些内容,或者尚未在其中实现?
正如Günter所建议的那样,编写自己的东西非常简单。
创建一个新的打字稿文件, week.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({ name: 'week' })
export class WeekPipe implements PipeTransform {
transform(value: Date): number {
return this.getWeekNumber(value);
}
// source: http://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php
private getWeekNumber(d: Date): number {
// Copy date so don't modify original
d = new Date(+d);
d.setHours(0, 0, 0);
// Set to nearest Thursday: current date + 4 - current day number
// Make Sunday's day number 7
d.setDate(d.getDate() + 4 - (d.getDay() || 7));
// Get first day of year
var yearStart = new Date(d.getFullYear(), 0, 1);
// Calculate full weeks to nearest Thursday
var weekNo = Math.ceil((((d.valueOf() - yearStart.valueOf()) / 86400000) + 1) / 7);
// Return array of year and week number
return weekNo;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是瞬间代码,则更加容易
import { Pipe, PipeTransform } from '@angular/core';
import * as moment from 'moment';
@Pipe({ name: 'week' })
export class WeekPipe implements PipeTransform {
transform(value: Date): number {
return moment(value).week();
}
}
Run Code Online (Sandbox Code Playgroud)
在您的app.module中包含管道
import { NgModule } from '@angular/core';
import { WeekPipe } from './pipes/week.pipe';
@NgModule({
imports: [
// your imports
],
declarations: [
AppComponent,
WeekPipe // including the pipe in declarations
],
bootstrap: [AppComponent]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
然后您可以照常在HTML中使用它
<div class="week-number">
{{ yourDate | week }}
</div>
Run Code Online (Sandbox Code Playgroud)
yourDate public yourDate: Date = new Date();在组件中的位置。