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

如何在React中使用Luxon将秒数正确转换为分钟/小时

用Luxon替代自定义秒数转时分秒函数

你的自定义函数核心是将秒数转换为带单位的字符串,规则如下:

  • 存在小时时,仅拼接小时和分钟(如3660 → 1h1min)
  • 仅存在分钟无小时时,拼接分钟和秒(如65 → 1min5sec)
  • 仅存在秒时,秒单位用seconde(如24 → 24seconde),其他场景秒单位用sec

以下是用Luxon实现的替代方案,完全匹配原有逻辑:

步骤1:安装Luxon

如果是项目环境,先安装依赖:

npm install luxon
# 或
yarn add luxon

步骤2:编写替代函数

利用Luxon的Duration类处理时间单位转换,无需手动计算取整:

import { Duration } from 'luxon';

function numberToHms(numbers) {
  const seconds = Number(numbers);
  // 用秒数创建Duration实例
  const duration = Duration.fromObject({ seconds });

  const h = duration.hours;
  const m = duration.minutes;
  const s = duration.seconds;

  const parts = [];

  // 按照原有规则拼接结果
  if (h > 0) {
    parts.push(`${h}h`);
    m > 0 && parts.push(`${m}min`);
  } else if (m > 0) {
    parts.push(`${m}min`);
    parts.push(`${s}sec`);
  } else {
    parts.push(`${s}seconde`);
  }

  return parts.join('');
}

测试验证

几个关键场景的输出和原函数一致:

  • numberToHms(24) → 24seconde
  • numberToHms(65) → 1min5sec
  • numberToHms(3660) → 1h1min
  • numberToHms(3600) → 1h

渲染代码保持不变:

<p>{numberToHms(24)}</p>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:01:04