我正在尝试过滤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。有没有办法解决这个问题?
答案 0 :(得分:1)
尝试00:hh:mm:ss
或00HHmmss
。
HHHH
不是有效的小时格式,因此Angular无法正确解析它。有四种有效的小时格式:
HH
:一天中的小时,填充(00-23)H
:一天中的小时(0-23)hh
:上午/下午的小时,填充(01-12)h
:上午/下午的小时,(1-12)(来源: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:ss
或00HHmmss
。