You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:09:11