搜索

首页  >  问答  >  正文

javascript - 我想在输入数字自动格式化日期格式,格式化日期格式为:YYYY-MM-DD

我想写一个组件,在输入数字中比如:201705 自动格式化日期格式,最终日期格式为:2017-05 再次输入06自动格式化2017-05-06

伊谢尔伦伊谢尔伦2822 天前1246

全部回复(6)我来回复

  • 習慣沉默

    習慣沉默2017-07-05 10:52:15

    Edit: 对提出的 case 做简单转换:

    const date str = '20170523'
    
    const result = new Date()
    result.setFullYear(parseInt(str.substr(0, 4)))
    result.setMonth(parseInt(str.substr(4, 2)) - 1)
    result.setDate(parseInt(str.substr(6, 2)))
    
    // 函数定义见下
    getDateFromTimestamp(result.getTime())

    一个简单的实现如下:

    // 1495517932472 毫秒级时间戳
    const date = new Date().getTime()
    
    function formatMonth (num) {
      return [
        '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'
      ][num]
    }
    
    function getDateFromTimestamp (ts) {
      const date =  new Date(ts)
      const YYYY = date.getFullYear()
      const MM = formatMonth(date.getMonth())
      const DD = date.getDate()
      return `${YYYY}-${MM}-${DD}`
    }
    
    // 2017-05-23
    console.log(getDateFromTimestamp(date))

    回复
    0
  • 世界只因有你

    世界只因有你2017-07-05 10:52:15

    你也许需要 momentjs

    回复
    0
  • 某草草

    某草草2017-07-05 10:52:15

    雷雷

    回复
    0
  • 怪我咯

    怪我咯2017-07-05 10:52:15

    雷雷

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-07-05 10:52:15

    雷雷

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-07-05 10:52:15

    原生<input type="date" pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}">不好吗?

    回复
    0
  • 取消回复