datetime/relativeTime.js

import { format, formatDistanceToNow } from 'date-fns';
import { zhCN } from 'date-fns/locale';
// 转换相对时间
const _convertTime = (obj) => {
    try {
        const item = {};
        for (let key in obj) {
            if (Object.prototype.hasOwnProperty.call(obj, key)) {
                const value = obj[key];
                if (key.endsWith('_at')) {
                    let key1 = key.replace('_at', '_at1');
                    let key2 = key.replace('_at', '_at2');
                    let dt = new Date(value);
                    if (value !== 0) {
                        item[key] = value;
                        item[key1] = format(dt, 'yyyy-MM-dd HH:mm:ss');
                        item[key2] = formatDistanceToNow(dt, { locale: zhCN, addSuffix: true });
                    } else {
                        item[key] = '';
                    }
                } else {
                    item[key] = value;
                }
            }
        }

        return item;
    } catch (err) {
        console.log('🚀 ~ err:', err);
    }
};

/**
 * 转换相对时间
 * @alias yd_datetime_relativeTime
 * @category datetime
 * @param {Array | object} data 数组或对象
 * @returns {object} 返回转换后的相对时间
 * @author 陈随易 <https://chensuiyi.me>
 * @example yd_datetime_relativeTime([])
 */
export default (data) => {
    // 如果是数组
    if (Array.isArray(data)) {
        return data.map((item) => {
            return _convertTime(item);
        });
    }

    // 如果是对象
    return _convertTime(data);
};