/**
 * 获取当前日期，格式为 yyyy-MM-dd
 * @returns 当前日期字符串，格式为 yyyy-MM-dd
 */
export function getCurrentDate(): string {
    const now = new Date()
    const year = now.getFullYear()

    // 获取月份，注意getMonth返回0-11，需要+1
    const month = String(now.getMonth() + 1).padStart(2, '0')

    // 获取日期，确保两位数格式
    const day = String(now.getDate()).padStart(2, '0')

    // 返回格式化后的日期字符串
    return `${year}-${month}-${day}`
}

/**
 * 格式化日期为yyyy-MM-dd格式
 * @param date 日期对象、时间戳或日期字符串
 * @returns 格式化后的日期字符串
 */
export function formatDate(date: Date | number | string): string {
    const d = new Date(date)
    const year = d.getFullYear()
    const month = String(d.getMonth() + 1).padStart(2, '0')
    const day = String(d.getDate()).padStart(2, '0')

    return `${year}-${month}-${day}`
}

/**
 * 根据日期算出年龄
 * @param date 日期字符串
 * @returns 算出的年龄
 */
export function getCalculateAge(birthDate: Date | string): number {
    // 解析出生日期字符串为Date对象
    const birthDateObj = new Date(birthDate)
    // 获取当前日期
    const currentDate = new Date()
    // 计算两个日期之间的年份差异
    let age = currentDate.getFullYear() - birthDateObj.getFullYear()
    // 检查是否还没到生日，如果是，则年龄减1
    const m = currentDate.getMonth() - birthDateObj.getMonth()
    if (m < 0 || (m === 0 && currentDate.getDate() < birthDateObj.getDate())) {
        age--
    }
    return age
}

/**
 * 获取当前时间，格式为 yyyy-MM-dd HH:mm:ss
 * @returns 当前日期字符串，格式为 yyyy-MM-dd HH:mm:ss
 */
export function getCurrentDateTime(): string {
    const now = new Date()
    const year = now.getFullYear()

    // 获取月份，注意getMonth返回0-11，需要+1
    const month = String(now.getMonth() + 1).padStart(2, '0')

    // 获取日期，确保两位数格式
    const day = String(now.getDate()).padStart(2, '0')

    const hour = String(now.getHours()).padStart(2, '0')
    const minute = String(now.getMinutes()).padStart(2, '0')
    const second = String(now.getSeconds()).padStart(2, '0')

    // 返回格式化后的日期字符串
    return `${year}-${month}-${day} ${hour}:${minute}:${second}`
}
