JavaScript中将YYYYMMDD转换为日期的三种方法

 更新时间:2025年08月07日 09:21:11   作者:BillKu  
这篇文章主要介绍了JavaScript中将YYYYMMDD字符串转换为日期对象的三种方法:手动拆分、正则表达式及ISO8601格式(推荐),需注意月份从0开始,时区处理差异,建议验证有效性,优先使用ISO格式以确保标准兼容性,需要的朋友可以参考下

在 JavaScript 中,将 "20250806"(格式为 YYYYMMDD)转换为日期对象,可以通过以下步骤实现:

方法 1:手动拆分字符串

const dateStr = "20250806";

// 拆分字符串获取年、月、日(注意:月份从 0 开始计数)
const year = parseInt(dateStr.substring(0, 4));
const month = parseInt(dateStr.substring(4, 6)) - 1; // 月份减 1
const day = parseInt(dateStr.substring(6, 8));

// 创建 Date 对象
const date = new Date(year, month, day);

console.log(date); // 输出: Wed Aug 06 2025 00:00:00 GMT+0800 (中国标准时间)

方法 2:使用正则表达式

const dateStr = "20250806";

// 正则匹配提取年、月、日
const [, year, month, day] = dateStr.match(/^(\d{4})(\d{2})(\d{2})$/);

// 创建 Date 对象(月份需减 1)
const date = new Date(year, month - 1, day);

console.log(date); // 同上

方法 3:使用 ISO 8601 格式(推荐)

const dateStr = "20250806";

// 转换为 YYYY-MM-DD 格式(ISO 8601)
const isoStr = `${dateStr.slice(0, 4)}-${dateStr.slice(4, 6)}-${dateStr.slice(6, 8)}`;

// 直接通过字符串创建 Date 对象
const date = new Date(isoStr);

console.log(date); // 同上(注意时区差异可能影响输出)

关键说明:

月份从 0 开始

JavaScript 的 Date 构造函数中,月份是 0(1月)到 11(12月),所以需要将原始字符串中的月份减 1。

时区问题

const utcDate = new Date(Date.UTC(year, month, day));

方法 1 和 2 创建的日期基于 本地时区(如 GMT+0800)。

方法 3(ISO 格式)创建的日期可能被解析为 UTC 时间,再转换为本地时区(不同浏览器可能有差异)。
如果需要 UTC 时间,请用:

验证有效性
建议检查生成的日期是否有效:

if (isNaN(date.getTime())) {
  console.error("无效日期");
}

最终选择:

推荐方法 3(ISO 8601 格式),代码简洁且符合标准。

如果需兼容旧浏览器,可选方法 1(手动拆分)。

export const formatDate = (date: string | Date | number, format = "YYYY-MM-DD HH:mm:ss") => {
  let resultTime = "";
  try {
    // 支持 ISO 8601 格式,日期格式为 YYYYMMDD,如:20250806
    if ((typeof date === "string" && date.length === 8) || (typeof date === "number" && date.toString().length === 8)) {
      if (typeof date === "number") {
        date = date.toString();
      }
      date = `${date.slice(0, 4)}-${date.slice(4, 6)}-${date.slice(6, 8)}`;
    }
    resultTime = dayjs(date).format(format);
  } catch (error) {}
  // 处理无效日期
  return resultTime === "Invalid Date" ? "" : resultTime;
};

到此这篇关于JavaScript中将YYYYMMDD转换为日期的三种方法的文章就介绍到这了,更多相关JavaScript YYYYMMDD转日期内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 理解javascript中DOM事件

    理解javascript中DOM事件

    这篇文章主要帮助大家理解javascript中DOM事件,解决了DOM事件的兼容性,DOM事件的冒泡,以及DOM事件的重用,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • 浅谈bootstrap源码分析之scrollspy(滚动侦听)

    浅谈bootstrap源码分析之scrollspy(滚动侦听)

    下面小编就为大家带来一篇浅谈bootstrap源码分析之scrollspy(滚动侦听)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • javascript简单实现命名空间效果

    javascript简单实现命名空间效果

    这篇文章主要介绍了javascript简单的实现命名空间效果的方法。需要的朋友可以过来参考下,希望对大家有所帮助
    2014-03-03
  • JavaScript 关键字屏蔽实现函数

    JavaScript 关键字屏蔽实现函数

    JavaScript屏蔽关键字,大概的思路就是去用javascript去替换已有的文本,达到替换的目的
    2009-08-08
  • jquery中live()方法和bind()方法区别分析

    jquery中live()方法和bind()方法区别分析

    这篇文章主要介绍了jquery中live()方法和bind()方法区别,结合实例形式简单分析了live()方法和bind()方法的功能、使用方法与用法区别,需要的朋友可以参考下
    2016-06-06
  • 移动端触屏幻灯片图片切换插件idangerous swiper.js

    移动端触屏幻灯片图片切换插件idangerous swiper.js

    这篇文章主要为大家详细介绍了移动端触屏幻灯片图片切换插件idangerous swiper.js的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 你不知道的 javascript【推荐】

    你不知道的 javascript【推荐】

    本文介绍了javascript中你所不知道的相关知识。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • javascript设计模式之Adapter模式【适配器模式】实现方法示例

    javascript设计模式之Adapter模式【适配器模式】实现方法示例

    这篇文章主要介绍了javascript设计模式之Adapter模式,结合实例形式分析了JS适配器模式的原理与具体实现方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • js实现鼠标点击飘爱心效果

    js实现鼠标点击飘爱心效果

    这篇文章主要为大家详细介绍了js实现鼠标点击飘爱心效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • 实例讲解JS中setTimeout()的用法

    实例讲解JS中setTimeout()的用法

    这篇文章主要介绍了JS中setTimeout()的用法,setTimeout()是属于window的method,但我们都是略去window这顶层对象名称,这是用来设定一个时间,时间到了,就会执行一个指定的method,需要深入了解的朋友可以参考下
    2016-01-01

最新评论