Javascript 毫秒到小时格式的转换

Javascript 毫秒到小时格式的转换,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个开始日期,时间和结束日期,时间,还有我要找出旅行的总持续时间。输出以毫秒为单位,我需要将其转换为小时格式。通过在这里搜索其他答案,我尝试了以下方法,但没有结果 <md-cell *mdCellDef="let row"> {{row?.duration | formatDuration}} </md-cell> 我认为错误在于ts文件,因为我是角度方面的新手 使用管道而不使用函数是否有任何直接转换?您不需要重新发明轮子。可以使用日期对象获取持续时间 假设您有两个

我有一个开始日期,时间和结束日期,时间,还有我要找出旅行的总持续时间。输出以毫秒为单位,我需要将其转换为小时格式。通过在这里搜索其他答案,我尝试了以下方法,但没有结果

<md-cell *mdCellDef="let row"> {{row?.duration | formatDuration}} </md-cell>
我认为错误在于ts文件,因为我是角度方面的新手


使用管道而不使用函数是否有任何直接转换?

您不需要重新发明轮子。可以使用日期对象获取持续时间

假设您有两个日期对象

  • 了解他们之间的区别。因为您已经有了millseconds,所以您已经完成了此步骤
  • 现在创建一个新的日期对象并删除时间值
  • 现在,当您为其设置新的时间值(差值)时,您就拥有了所有的值。只需使用函数,获取值并以您的格式显示即可
函数getTravelDuration(日期1、日期2){ var diff=+date2-+date1; var today=新日期(); 今天,设定时间(0,0,0,0); var到达=新日期(+今天+差异); var duration=['getFullYear'、'getMonth'、'getDate'、'getHours'、'getMinutes'、'getSeconds'].reduce(函数(p、c、i、a){ var值=到达[c]()-今天[c](); 如果(值){ p+=数值; p+=((c=='getFullYear')?'Year':c.replace('get','')+' } 返回p; }, ''); console.log(持续时间); } 函数双位数(str){ 返回('00'+str).slice(-2) } getTravelDuration(新日期(2017年10月5日),新日期(2017年10月5日15日23日));
getTravelDuration(新日期(2017年10月5日),新日期(2017年10月6日15日23日30日))您不需要重新发明轮子。可以使用日期对象获取持续时间

假设您有两个日期对象

  • 了解他们之间的区别。因为您已经有了millseconds,所以您已经完成了此步骤
  • 现在创建一个新的日期对象并删除时间值
  • 现在,当您为其设置新的时间值(差值)时,您就拥有了所有的值。只需使用函数,获取值并以您的格式显示即可
函数getTravelDuration(日期1、日期2){ var diff=+date2-+date1; var today=新日期(); 今天,设定时间(0,0,0,0); var到达=新日期(+今天+差异); var duration=['getFullYear'、'getMonth'、'getDate'、'getHours'、'getMinutes'、'getSeconds'].reduce(函数(p、c、i、a){ var值=到达[c]()-今天[c](); 如果(值){ p+=数值; p+=((c=='getFullYear')?'Year':c.replace('get','')+' } 返回p; }, ''); console.log(持续时间); } 函数双位数(str){ 返回('00'+str).slice(-2) } getTravelDuration(新日期(2017年10月5日),新日期(2017年10月5日15日23日)); getTravelDuration(新日期(2017年10月5日),新日期(2017年10月6日15日23日30日))对我来说,最好的选择(没有错误)是使用矩库,而不是日期库。 请查收

使用流行且经过测试的库可能更好。可以在角度样板中使用:

例如:

{{startDate | amDifference: endDate :'' }}
对我来说,最好的选择(没有错误)是使用矩库,而不是日期库。 请查收

使用流行且经过测试的库可能更好。可以在角度样板中使用:

例如:

{{startDate | amDifference: endDate :'' }}

您可以直接使用此代码

export class StoppageComponent implements OnInit {

constructor() {
 }

ngOnInit() {
}


filter('formatDuration', function () {
    return function (input) {
        var result = new Date(input);
var n = (d.getDate().toString()) +'/'+ (d.getMonth().toString())+'/' +(d.getFullYear().toString()) + '  '+ (d.getHours().toString()) +':'+ (d.getHours().toString()) +':'+ (d.getSeconds().toString());

        return result;
    };
  });
}

您可以直接使用此代码

export class StoppageComponent implements OnInit {

constructor() {
 }

ngOnInit() {
}


filter('formatDuration', function () {
    return function (input) {
        var result = new Date(input);
var n = (d.getDate().toString()) +'/'+ (d.getMonth().toString())+'/' +(d.getFullYear().toString()) + '  '+ (d.getHours().toString()) +':'+ (d.getHours().toString()) +':'+ (d.getSeconds().toString());

        return result;
    };
  });
}

其他答案看起来很复杂,最后我自己找到了解决办法

Html作为

<md-cell *mdCellDef="let row"> {{getFormathours(row?.duration)}} </md-cell>

这提供了我所需要的确切输出,并根据我的问题提供了更清晰的解决方案。。无论如何,我也感谢其他人的回答,感谢你的努力。

其他答案看起来很复杂,最后我自己找到了解决办法

Html作为

<md-cell *mdCellDef="let row"> {{getFormathours(row?.duration)}} </md-cell>
这提供了我所需要的确切输出,并根据我的问题提供了更清晰的解决方案。。不管怎样,我也感谢其他人的回答,感谢你的努力