JavaScript new Date Ordinal (st, nd, rd, th)

前端 未结 15 1924
北海茫月
北海茫月 2020-11-27 03:12

If at all possible, without JavaScript libraries or lots of clunky code I am looking for the simplest way to format a date two weeks from now in the following format:

<
15条回答
  •  無奈伤痛
    2020-11-27 03:31

    I'm a bit late to the party, but this should work:

    function ordinal(number) {
      number = Number(number)
      if(!number || (Math.round(number) !== number)) {
        return number
      }
      var signal = (number < 20) ? number : Number(('' + number).slice(-1))
      switch(signal) {
        case 1:
          return number + 'st'
        case 2:
          return number + 'nd'
        case 3:
          return number + 'rd'
        default:
          return number + 'th'
      }
    }
    
    function specialFormat(date) {
      // add two weeks
      date = new Date(+date + 12096e5)
      var months = [
        'January'
        , 'February'
        , 'March'
        , 'April'
        , 'May'
        , 'June'
        , 'July'
        , 'August'
        , 'September'
        , 'October'
        , 'November'
        , 'December'
      ]
      var formatted = ordinal(date.getDate())
      formatted += ' ' + months[date.getMonth()]
      return formatted + ' ' + date.getFullYear()
    }
    
    document.body.innerHTML = specialFormat(new Date())
    

提交回复
热议问题