角度过滤日期显示四位小时字段

时间:2016-10-10 20:31:36

标签: javascript angularjs date

我正在尝试过滤Date()字段,以便在小时数时显示四位数。下面的代码不起作用。如何处理以下格式:HHHH:mm:ss

app.filter('secondsToHHmmss', function($filter) {
    return function(seconds) {
        return $filter('date')(new Date(0, 0, 0, 0).setSeconds(seconds), 'HHHH:mm:ss');
    };
})

我可以满足dd:hh:mm:ss格式,但问题是每当我初始化零值Date()对象时,日期总是显示为31。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

TL; DR

尝试00:hh:mm:ss00HHmmss

说明

HHHH不是有效的小时格式,因此Angular无法正确解析它。有四种有效的小时格式:

  1. HH:一天中的小时,填充(00-23)
  2. H:一天中的小时(0-23)
  3. hh:上午/下午的小时,填充(01-12)
  4. h:上午/下午的小时,(1-12)
  5. 来源:https://docs.angularjs.org/api/ng/filter/date

    使用表达式new Date(0, 0, 0, 0)设置“零值日期”将始终返回Sun Dec 31 1899 00:00:00的Javascript日期加上您的本地时区偏移量和TZID缩写,这就是您看到Angular过滤器返回的原因日期为31

    如果您只想在返回值的前两位数字中添加占位符字符,则可以直接在格式化程序中执行此操作,例如: 00:hh:mm:ss00HHmmss