JS字符串格式转换问题,无格式的日期转换为有格式?

我希望将20181130,这样的日期格式,转为2018-11-30这样的格式,有什么快速转换方案吗?

阅读 4.1k
4 个回答

如果是固定这个长度的字符串用正则转换即可

let str = '20181130';

let result = str.replace(/(\d{4})(\d{2})(\d{2})/g, '$1-$2-$3');

遍历吧 ,没有原生的方法

这个日期转换稍微有点麻烦, 给你个参考希望能对你有有所帮助:
进入后搜索 c.dates
查看这行代码:

/**
 * 解析器必须在{@link Date}环境中使用
 * @param dateStr 日期字符串
 * @param pattern 解析规则: yMdHmsS
 * @returns {Date|null} 解析成功返回日期对象, 否则返回null
 */
parser: function (dateStr, pattern)

整体思路:

  1. 首先要确定日期字符串的规则pattern是什么, 再逐一解析并设置到日期对象Date
  2. 在将日期对象实例格式化format()为指定规则pattern

这个其实要看你原始数据是否规则,如果够规则,比如明确的都是8位数字字符,则现在采用的答案方式是比较快速的方法。

否则其实是一个很复杂的问题。

就是采用的方法也有很多限制,比如不能对无效日期进行提示。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题