AngularJS中如何通过函数而非过滤器将毫秒转换为分钟
解决毫秒转分钟的函数问题
我看到你遇到的问题了——你的getTimeInMinute函数逻辑有个小漏洞,导致无法正确转换超过60分钟的毫秒值。让我帮你修正一下:
原函数的问题所在
你原来的代码通过创建Date对象并调用getUTCMinutes()来获取分钟数,但这个方法只会返回当前小时范围内的分钟数(0-59)。如果你的毫秒值对应时长超过1小时,就会丢失小时部分转换的分钟数。举个例子:
- 70分钟对应的毫秒是
70 * 60 * 1000 = 4200000 - 原函数会返回
10(因为Date对象解析为1小时10分钟,getUTCMinutes()只提取了10),而不是正确的70
修正后的函数实现
我们可以直接通过数学计算来得到总分钟数,避开Date对象的限制,同时还能处理空值/非数字的异常情况:
$scope.getTimeInMinute = function(timeInMilli){ // 处理空值、非数字输入,避免页面报错 if (!timeInMilli || isNaN(timeInMilli)) return 0; // 直接计算总分钟数:毫秒 → 秒 → 分钟 const totalSeconds = timeInMilli / 1000; const totalMinutes = totalSeconds / 60; // 根据需求选择取整方式: // 1. 四舍五入到最近整数分钟 return Math.round(totalMinutes); // 2. 向下取整(只保留完整分钟) // return Math.floor(totalMinutes); // 3. 保留1位小数(如需显示半分钟等) // return totalMinutes.toFixed(1); };
模板调用无需修改
你的模板调用方式完全没问题,函数修正后就能正常显示正确的分钟数了:
<div>{{getTimeInMinute(selectedItem.parameter1)}}</div> <div>{{getTimeInMinute(selectedItem.parameter2)}}</div> <div>{{getTimeInMinute(selectedItem.parameter3)}}</div> <div>{{getTimeInMinute(selectedItem.parameter4)}}</div>
内容的提问来源于stack exchange,提问作者tommy123
相关产品推荐
相关产品推荐

