时间格式化

2024/7/23 JavaScript

用于将标准格式时间或时间戳格式化输出

// 定义一个函数,用于格式化日期
function formatDate(date) {
  // 检查传入的参数是否非空
  if (date) {
    // 将传入的日期字符串转换为标准的JSON日期格式
    // 这里使用new Date(date).toJSON()是因为toJSON()方法可以确保日期字符串被正确地转换为ISO 8601格式
    let jsonDate = new Date(date).toJSON();
    // 为了将时间转换到UTC+8(东八区),我们需要先将日期字符串转换为Date对象,
    // 然后加上8小时(以毫秒计)。这是因为JavaScript的Date对象内部使用的是毫秒值,
    // 所以需要将小时转换为毫秒(8*3600*1000)再相加。
    // +new Date(jsonDate)将jsonDate字符串再次转换为Date对象,并取其数值(毫秒值)
    return new Date(+new Date(jsonDate) + 8 * 3600 * 1000)
      // 使用toISOString()方法将新的Date对象转换为ISO 8601格式的字符串,
      // 这个方法会自动考虑到当前的时区设置,但是我们已经通过上面的加法操作将时间调整到了UTC+8
      .toISOString()
      // 使用replace()方法替换字符串中的'T'字符为' '(空格),这是因为我们的目标格式是使用空格分割日期和时间
      .replace(/T/g, " ")
      // 再次使用replace()方法移除ISO 8601格式字符串末尾的小数点和'Z'字符,
      // 因为我们不需要这些部分,只想要'年-月-日 时:分:秒'格式的日期时间字符串
      .replace(/\.[\d]{3}Z/, "");
  }
}