代码之家  ›  专栏  ›  技术社区  ›  Nenad Bulatović

使用“h”作为时间分隔符的角度6

  •  1
  • Nenad Bulatović  · 技术社区  · 6 年前

    是否有任何内置的简单方法可以使用“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');
          }
        }
      }
    }
    

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

    2 回复  |  直到 6 年前
        1
  •  1
  •   Christian Vincenzo Traina    6 年前

    不,没有内置的解决方案使用“h”作为分隔符。不过,正如你所见 here ,的 transform() 方法总是返回 string null . 你可以利用这一点,并使用 .replace() 用h字母替换分号的方法:

    case 'fr': {
        let transformedDate = super.transform(value, 'dd/MM/yyyy HH:mm');
        return transformedDate && transformedDate.replace(':', 'h');
    }
    
        2
  •  2
  •   Frank Fajardo    6 年前

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

    value 时间是下午1:15,这会回来的 13h15

    看看这把小提琴的效果: https://stackblitz.com/edit/angular-wvtdpw