📌  相关文章
📜  以非常人类可读的格式 js 格式化 iso 时间,例如 n 秒前等 - Javascript (1)

📅  最后修改于: 2023-12-03 14:49:32.181000             🧑  作者: Mango

以非常人类可读的格式 js 格式化 ISO 时间 - Javascript

在现代的应用开发中,我们经常需要处理时间相关的任务。ISO 时间是指国际标准化组织(ISO)定义的时间格式,它以一种固定的格式表示时间,例如:"2022-01-01T12:00:00.000Z"。然而,这种时间格式对于人类来说并不直观且难以理解。

为了改善用户体验,可以使用 JavaScript 对 ISO 时间进行格式化,以便以一种更加可读的方式呈现给用户。下面是一个示例的 JavaScript 函数,可以将 ISO 时间转换为非常人类可读的格式:

/**
 * 将 ISO 时间格式化为非常人类可读的格式
 * @param {String} isoTime - 要格式化的 ISO 时间
 * @returns {String} - 格式化后的时间字符串
 */
function formatISOTime(isoTime) {
  const currentTime = new Date();
  const inputTime = new Date(isoTime);
  const timeDiff = currentTime - inputTime;

  // 定义时间单位和对应的毫秒数
  const timeUnits = [
    { unit: '年', inMilliseconds: 1000 * 60 * 60 * 24 * 365 },
    { unit: '个月', inMilliseconds: 1000 * 60 * 60 * 24 * 30 },
    { unit: '周', inMilliseconds: 1000 * 60 * 60 * 24 * 7 },
    { unit: '天', inMilliseconds: 1000 * 60 * 60 * 24 },
    { unit: '小时', inMilliseconds: 1000 * 60 * 60 },
    { unit: '分钟', inMilliseconds: 1000 * 60 },
    { unit: '秒', inMilliseconds: 1000 },
  ];

  // 遍历时间单位,找到合适的单位
  for (let i = 0; i < timeUnits.length; i++) {
    const { unit, inMilliseconds } = timeUnits[i];
    if (timeDiff >= inMilliseconds) {
      const timeAgo = Math.floor(timeDiff / inMilliseconds);
      return `${timeAgo} ${unit}前`;
    }
  }

  return '刚刚';
}

使用上述函数,可以通过以下方式进行时间格式化:

const isoTime = "2022-01-01T12:00:00.000Z";
const formattedTime = formatISOTime(isoTime);
console.log(formattedTime); // 输出: "n 秒前" 或 "刚刚"

这个函数会根据给定的 ISO 时间,计算出当前时间与输入时间之间的时间差,并返回一个易读的时间字符串,例如:"3 天前"、"2 小时前"、"30 秒前" 等等。

在实际应用中,你可以将时间格式化后展示在界面上,以便用户能够更好地理解时间的流逝。