1

是否有任何内置的简单方法可以使用“h”作为小时/分钟分隔符?我正在尝试按照以下方式执行类似“12h45”的操作:

对于其他国家来说,这很容易,例如

import { Pipe, PipeTransform } from '@angular/core';
import { DatePipe } from '@angular/common';

@Pipe({
  name: 'dateFormat'
})
export class DateFormatPipe extends DatePipe implements PipeTransform {

  transform(value: any, args?: any): any {

    switch (args) {
      case 'en': {
        return super.transform(value, 'MM/dd/yyyy h:mm a');
      }

      case 'fr': {
        return super.transform(value, 'dd/MM/yyyy HH:mm'); // <--- find proper separator
      }

      case 'de': {
        return super.transform(value, 'dd.MM.yyyy HH:mm');
      }

      case 'es': {
        return super.transform(value, 'yyyy/MM/dd hh:MM');
      }
    }
  }
}

注意:选定的日期格式可能不是真实的或在日常使用中,这仅用于演示目的。

4

2 回答 2

2

您也可以执行以下两项中的任何一项:

super.transform(value, 'H\'h\'mm');
super.transform(value, "H\'h\'mm");

用单引号括起来的格式字符串中的任何内容都按原样显示。因此,如果value有时间为下午 1:15,这将返回13h15

看看它在这个小提琴上的工作:https ://stackblitz.com/edit/angular-wvtdpw

于 2018-08-31T01:31:01.117 回答
1

不,没有使用“h”作为分隔符的内置解决方案。虽然,正如您在此处看到的那样,这些transform()方法总是返回stringor null。您可以利用这一点并使用该.replace()方法将分号替换为 h 字母:

case 'fr': {
    let transformedDate = super.transform(value, 'dd/MM/yyyy HH:mm');
    return transformedDate && transformedDate.replace(':', 'h');
}
于 2018-08-30T22:58:47.757 回答