gpt4 book ai didi

Angular 2 日期管周数

转载 作者:行者123 更新时间:2023-12-02 16:39:40 25 4
gpt4 key购买 nike

我查找了如何在 Angular 2 中返回周数。我还没有找到这个问题的答案。我确实在https://docs.angularjs.org/api/ng/filter/date上找到了在 Angular 1 中,它会是这样的: {{today | date:'w'}} 但这似乎在 Angular 2 中不起作用。我知道我可以编写一个函数来处理这个问题,但这似乎不实用。我是否遗漏了有关 Angular 2 的文档中的某些内容,或者该文档尚未实现?

最佳答案

正如 Günter 所说,编写自己的代码非常简单。

创建一个新的 typescript 文件,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;
}
}

如果您使用 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();

关于 Angular 2 日期管周数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35474506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com