📅  最后修改于: 2023-12-03 14:49:32.181000             🧑  作者: Mango
在现代的应用开发中,我们经常需要处理时间相关的任务。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 秒前" 等等。
在实际应用中,你可以将时间格式化后展示在界面上,以便用户能够更好地理解时间的流逝。