angular 2 日期管道周数
angular 2 date pipe weeknumber
我在 Angular 2 中查找了如何 return 周数。我还没有找到这个问题的答案。
我确实在 https://docs.angularjs.org/api/ng/filter/date 上发现在 Angular 1 中它会是这样的:{{today | date:'w'}}
但这似乎在 Angular 2 中不起作用。我知道我可以写一个函数来处理这个,但这似乎不实用。我是否遗漏了有关 Angular 2 的文档中的内容,或者这是否(尚未)在那里实施?
DatePipe目前不支持weekOfYear
。
不过您可以实现自己的 WeekOfYear
管道。
有关详细信息,请参阅 https://angular.io/docs/ts/latest/guide/pipes.html。
正如 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:
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;
}
}
如果你使用的是 moment,代码会更简单
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();
}
}
在您的 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 { }
然后您可以像往常一样在 HTML 中使用它
<div class="week-number">
{{ yourDate | week }}
</div>
其中 yourDate 是组件中的 public yourDate: Date = new Date();
。
编辑:我在此处提到的错字已得到修复。
我没有资格评论 Patrick 的例子,但我想声明这里有一个错字:
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();
}
}
标记传递给"moment()"的"value"参数。
DatePipe 在 Angular 7:
中支持一年中的星期和月份中的星期
我在 Angular 2 中查找了如何 return 周数。我还没有找到这个问题的答案。
我确实在 https://docs.angularjs.org/api/ng/filter/date 上发现在 Angular 1 中它会是这样的:{{today | date:'w'}}
但这似乎在 Angular 2 中不起作用。我知道我可以写一个函数来处理这个,但这似乎不实用。我是否遗漏了有关 Angular 2 的文档中的内容,或者这是否(尚未)在那里实施?
DatePipe目前不支持weekOfYear
。
不过您可以实现自己的 WeekOfYear
管道。
有关详细信息,请参阅 https://angular.io/docs/ts/latest/guide/pipes.html。
正如 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:
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;
}
}
如果你使用的是 moment,代码会更简单
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();
}
}
在您的 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 { }
然后您可以像往常一样在 HTML 中使用它
<div class="week-number">
{{ yourDate | week }}
</div>
其中 yourDate 是组件中的 public yourDate: Date = new Date();
。
编辑:我在此处提到的错字已得到修复。
我没有资格评论 Patrick 的例子,但我想声明这里有一个错字:
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();
}
}
标记传递给"moment()"的"value"参数。
DatePipe 在 Angular 7:
中支持一年中的星期和月份中的星期