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

如何为portionTime函数添加天数输出选项?技术求助

为portionTime函数添加可选天数输出功能

可以通过给函数增加一个可选参数实现需求,默认不输出天数,不会影响原有代码的使用逻辑。下面是修改后的完整代码:

const portionTime = (durationInSeconds, includeDays = false) => {
  let days = 0;
  let hours = durationInSeconds / 3600;
  
  // 开启天数计算时,先拆分天数,再计算剩余小时数
  if (includeDays) {
    days = Math.trunc(durationInSeconds / 86400); // 1天 = 86400秒
    hours = Math.trunc((durationInSeconds % 86400) / 3600);
  } else {
    hours = Math.trunc(hours);
  }
  
  const mins = Math.trunc((durationInSeconds % 3600) / 60);
  const secs = Math.trunc(durationInSeconds % 60);

  // 处理全零的情况
  if (!days && !hours && !mins && !secs) {
    return "None";
  }

  // 用数组存储时间片段,简化拼接逻辑
  const parts = [];
  if (days) parts.push(`${days} day${days > 1 ? 's' : ''}`);
  if (hours) parts.push(`${hours} hr${hours > 1 ? 's' : ''}`);
  if (mins) parts.push(`${mins} min${mins > 1 ? 's' : ''}`);
  if (secs) parts.push(`${secs} sec${secs > 1 ? 's' : ''}`);

  // 处理分隔符逻辑,最后一组用&连接
  if (parts.length === 1) {
    return parts[0];
  } else if (parts.length === 2) {
    return `${parts[0]} & ${parts[1]}`;
  } else {
    const lastPart = parts.pop();
    return `${parts.join(', ')} & ${lastPart}`;
  }
};

关键改动说明:

  1. 新增可选参数:includeDays = false,默认关闭天数输出,确保原有调用方式完全兼容
  2. 天数计算逻辑:开启天数功能时,先通过durationInSeconds / 86400计算天数,再用取余后的秒数计算剩余小时数
  3. 字符串拼接优化:改用数组存储各时间片段,替代原有的多层if判断,同时支持复数形式(如2 days)
  4. 修正秒数计算:原代码中secs = (mins * 60) % 60存在精度问题,直接用durationInSeconds % 60更准确

使用示例:

// 原有调用方式,不输出天数
console.log(portionTime(3661)); // 输出 "1 hr & 1 sec"
console.log(portionTime(7200)); // 输出 "2 hr"

// 开启天数输出
console.log(portionTime(90061, true)); // 输出 "1 day, 1 hr & 1 sec"
console.log(portionTime(172800, true)); // 输出 "2 days"
console.log(portionTime(86460, true)); // 输出 "1 day & 1 min"

内容的提问来源于stack exchange,提问作者Sofian.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:36:27