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

如何将nanosecond格式时间戳转换为24小时制格式在前端展示

时间戳转24小时制展示实现方案

首先澄清:你提到的10位数字1628165909为秒级Unix时间戳,若接口返回的是纳秒级时间戳为19位数字,处理前需先转换为毫秒级再交给日期对象解析。


方案1:原生JavaScript实现(无第三方依赖)

直接用浏览器自带的Date对象处理,不需要引入额外依赖:

/**
 * 时间戳转指定格式时间
 * @param {number} timestamp - 接口返回的秒级/纳秒级时间戳
 * @returns {string} 格式化后的时间,如1.00、13.00
 */
function formatUnixTime(timestamp) {
  // 统一转成Date对象支持的毫秒级时间戳
  let msTimestamp;
  const tsStr = timestamp.toString();
  if (tsStr.length === 19) {
    // 纳秒级时间戳转毫秒级
    msTimestamp = Math.floor(timestamp / 1000000);
  } else if (tsStr.length === 10) {
    // 秒级时间戳转毫秒级
    msTimestamp = timestamp * 1000;
  } else {
    // 适配已为毫秒级的13位时间戳
    msTimestamp = timestamp;
  }
  const time = new Date(msTimestamp);
  // getHours返回0-23的24小时制小时数,分钟补前导0
  const hour = time.getHours();
  const minute = time.getMinutes().toString().padStart(2, '0');
  return `${hour}.${minute}`;
}

// 测试示例
console.log(formatUnixTime(1628165909)); // 输出对应时间:17.38

方案2:日期工具库实现(项目已引入dayjs/luxon等库的场景)

如果项目已经接入了日期处理工具库,可以用更简洁的写法,以dayjs为例:

import dayjs from 'dayjs';

function formatUnixTime(timestamp) {
  const tsStr = timestamp.toString();
  let msTimestamp = timestamp;
  if (tsStr.length === 19) msTimestamp = Math.floor(timestamp / 1e6);
  if (tsStr.length === 10) msTimestamp = timestamp * 1000;
  // 格式符H代表24小时制不补0的小时,mm代表两位数的分钟
  return dayjs(msTimestamp).format('H.mm');
}

适配说明

  • getHours()和格式符H本身就返回24小时制的数值,凌晨1点返回1,下午1点返回13,完全匹配你的展示要求,无需额外做12/24小时制转换。
  • 如果需要固定展示UTC时间而非用户本地时区时间,原生方案可以将getHours()替换为getUTCHours()、getMinutes()替换为getUTCMinutes();dayjs可以用utc()方法适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:42:03