123456789101112131415161718192021222324252627282930313233 |
- import { Injectable, Pipe, PipeTransform } from '@angular/core';
- import { formatDate } from '@angular/common';
- import { registerLocaleData } from '@angular/common';
- import localeZh from '@angular/common/locales/zh';
- registerLocaleData(localeZh);
- @Pipe({
- name: 'showDate'
- })
- @Injectable()
- export class ShowDatePipe implements PipeTransform {
- transform(date: Date, locale: string = 'zh-CN'): string {
- const now = new Date();
- const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
- const yesterday = new Date(today);
- yesterday.setDate(yesterday.getDate() - 1);
- const beforeYesterday = new Date(yesterday);
- beforeYesterday.setDate(beforeYesterday.getDate() - 1);
- const dateOnly = new Date(date.getFullYear(), date.getMonth(), date.getDate());
- if (dateOnly.toISOString() === today.toISOString()) {
- return formatDate(date, 'HH:mm', locale);
- } else if (dateOnly.toISOString() === yesterday.toISOString()) {
- return `昨天 ${formatDate(date, 'HH:mm', locale)}`;
- } else if (dateOnly.toISOString() === beforeYesterday.toISOString()) {
- return `前天 ${formatDate(date, 'HH:mm', locale)}`;
- } else {
- return formatDate(date, 'yyyy-MM-dd HH:mm', locale);
- }
- }
- }
|