import Vue from 'vue'
import moment from 'moment'

/**
 * 时间格式化
 * @param {String} value 时间字符串
 * @param {String} formatString 格式化字符串
 */
Vue.filter('date', function(value, formatString = 'YYYY-MM-DD HH:mm:ss') {
    if (!value) return '';

    // 检查是否为ISO 8601格式的时间字符串
    const iso8601Pattern = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}\+\d{2}:\d{2}/;
    const normalPattern = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/;

    // 如果是字符串且匹配ISO 8601格式
    if (typeof value === 'string' && iso8601Pattern.test(value)) {
        return moment(value).format(formatString);
    }

    // 如果是字符串且匹配正常时间格式
    if (typeof value === 'string' && normalPattern.test(value)) {
        return moment(value, 'YYYY-MM-DD HH:mm:ss').format(formatString);
    }

    // 如果是字符串，将其转换为数字
    if (typeof value === 'string') {
        value = Number(value);
    }

    // 如果是秒级时间戳，转换为毫秒级
    if (typeof value === 'number' && value.toString().length === 10) {
        value = value * 1000;
    }

    return moment(value).format(formatString);
});
