wlzboy
2025-10-26 1626d13ec8b1a63676e63cf95c5004c4118da3b3
app/utils/common.js
@@ -51,4 +51,90 @@
    }
  }
  return result
}
/**
 * 格式化日期时间(兼容iOS)
 * @param dateTime 日期时间字符串或Date对象
 * @param format 格式化模板,默认为 'YYYY-MM-DD HH:mm:ss'
 * @returns {string} 格式化后的日期时间字符串
 */
export function formatDateTime(dateTime, format = 'YYYY-MM-DD HH:mm:ss') {
  if (!dateTime) return ''
  let date
  if (typeof dateTime === 'string') {
    // iOS兼容性处理:将 "yyyy-MM-dd HH:mm:ss" 格式转换为 "yyyy/MM/dd HH:mm:ss"
    const iosCompatibleDate = dateTime.replace(/-/g, '/')
    date = new Date(iosCompatibleDate)
  } else {
    date = new Date(dateTime)
  }
  // 检查日期是否有效
  if (isNaN(date.getTime())) {
    console.warn('Invalid date:', dateTime)
    return ''
  }
  const year = date.getFullYear()
  const month = String(date.getMonth() + 1).padStart(2, '0')
  const day = String(date.getDate()).padStart(2, '0')
  const hours = String(date.getHours()).padStart(2, '0')
  const minutes = String(date.getMinutes()).padStart(2, '0')
  const seconds = String(date.getSeconds()).padStart(2, '0')
  // 根据format模板返回格式化结果
  if (format === 'YYYY-MM-DD') {
    return `${year}-${month}-${day}`
  } else if (format === 'YYYY-MM-DD HH:mm') {
    return `${year}-${month}-${day} ${hours}:${minutes}`
  } else if (format === 'MM-DD HH:mm') {
    return `${month}-${day} ${hours}:${minutes}`
  } else {
    return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
  }
}
/**
 * 获取系统信息(兼容新旧API)
 * 替代已废弃的uni.getSystemInfoSync()
 * @returns {Object} 系统信息对象
 */
export function getSystemInfo() {
  // #ifdef MP-WEIXIN
  // 微信小程序使用新API
  try {
    const windowInfo = uni.getWindowInfo()
    const deviceInfo = uni.getDeviceInfo()
    const appBaseInfo = uni.getAppBaseInfo()
    return {
      ...windowInfo,
      ...deviceInfo,
      ...appBaseInfo,
      // 兼容旧字段名
      windowHeight: windowInfo.windowHeight,
      windowWidth: windowInfo.windowWidth,
      screenHeight: windowInfo.screenHeight,
      screenWidth: windowInfo.screenWidth,
      statusBarHeight: windowInfo.statusBarHeight,
      platform: deviceInfo.platform,
      system: deviceInfo.system,
      model: deviceInfo.model,
      brand: deviceInfo.brand,
      SDKVersion: appBaseInfo.SDKVersion,
      version: appBaseInfo.version
    }
  } catch (e) {
    // 降级使用旧API
    console.warn('新API调用失败,降级使用旧API', e)
    return uni.getSystemInfoSync()
  }
  // #endif
  // #ifndef MP-WEIXIN
  // 其他平台继续使用旧API
  return uni.getSystemInfoSync()
  // #endif
}