操作时间处理:从unix时间转为Date格式时间

操作时间是如何设置并直接返回日期格式而非 Unix 时间戳的。

核心逻辑:时间格式化函数

function formatTimestamp(timestamp) {
  const date = new Date(timestamp)

  const pad = (num) => num.toString().padStart(2, '0')

  const year = date.getFullYear()
  const month = pad(date.getMonth() + 1) // 月份从0开始,所以需要+1
  const day = pad(date.getDate())
  const hours = pad(date.getHours())
  const minutes = pad(date.getMinutes())
  const seconds = pad(date.getSeconds())

  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
}

讲解:

  1. 这个函数接收一个 Unix 时间戳(毫秒级)

  2. 使用 JavaScript 的 Date 对象将时间戳转换为日期对象

  3. 提取年、月、日、时、分、秒

  4. 使用 padStart 方法确保月份、日期、时间等都是一位数时前面补零(例如:5变成05)

  5. 按照 YYYY-MM-DD HH:MM:SS 的格式拼接成字符串返回

时间范围设置

const startOfDayTimestamp = getStartOfDayTimestamp()
const endOfDayTimestamp = getEndOfDayTimestamp()

queryItems.value.start_time = formatTimestamp(startOfDayTimestamp)
queryItems.value.end_time = formatTimestamp(endOfDayTimestamp)

讲解:

  1. getStartOfDayTimestampgetEndOfDayTimestamp 分别获取当天开始和结束的时间戳

  2. 使用 formatTimestamp 函数将这些时间戳转换为易读的日期格式

  3. 将转换后的结果赋值给 queryItems.value.start_timequeryItems.value.end_time

时间范围选择器的处理

const handleDateRangeChange = (value) => {
  if (value == null) {
    queryItems.value.start_time = null
    queryItems.value.end_time = null
  } else {
    queryItems.value.start_time = formatTimestamp(value[0])
    queryItems.value.end_time = formatTimestamp(value[1])
  }
}

讲解:

  1. 当用户选择时间范围时,value 是一个包含两个 Unix 时间戳的数组

  2. 对这两个时间戳分别调用 formatTimestamp 函数进行格式化

  3. 将格式化后的结果赋值给 queryItems.value.start_timequeryItems.value.end_time

表格列的定义

{
  title: '操作时间',
  key: 'created_at',
  align: 'center',
  width: 'auto',
  ellipsis: { tooltip: true },
}

讲解:

  1. 表格中定义了一个 "操作时间" 列,对应数据中的 created_at 字段

  2. 这里的 created_at 字段在后端返回时可能是 Unix 时间戳

  3. 但在前端展示时,我们通常会对其进行格式化处理(虽然代码中没有直接体现,但可以通过类似 formatTimestamp 的方法进行处理)

总结:时间格式化流程

  1. 后端返回:时间数据通常以 Unix 时间戳形式返回(毫秒级数字)

  2. 前端接收:获取到时间戳后,使用 formatTimestamp 函数进行格式化

  3. 展示给用户:将格式化后的字符串展示在页面上

优化建议(可选)

  1. 集中管理格式化逻辑: 可以将 formatTimestamp 放到一个公共工具文件中,方便项目中其他地方复用

  2. 添加时区处理: 如果系统涉及多个时区,可以在格式化前调整时区

  3. 使用日期库: 对于更复杂的日期处理,可以考虑使用 date-fnsday.js 等日期处理库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值