JSFiddle - React, Tailwind, and code Playground

by thelifeisyours

JavaScript

const date = (type) => {
    let date = new Date();

    let day = {
      number: {
        week: date.getDay(),
        full: date.getDate(),
      },

      text: ["Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"][date.getDay() - 1]
    }

    let month = {
      number: date.getMonth(),
      text: ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"][date.getMonth() - 1]
    }

    let year = {
      number: {
        short: date.getFullYear().toString().slice(2),
        full: date.getFullYear(),
      },
    }

    let time = {
      hours: {
        military: date.getHours(),
        standard: date.getHours() % 12,
      },

      minutes: date.getMinutes()
    }

    let timeStringFormat = /(weekday|day|dd|d)|(month|MM)|(y{4}|Y{4}|y{2}|Y{2})|(hh|h)|(mm)|(\W+)/g
    let matchTimeStringFormat = type.match(timeStringFormat);

    console.log(matchTimeStringFormat);

    let timeString = matchTimeStringFormat.map((matched) => {
      switch(matched) {
        //Match days
        case("d"): {
          return day.number.week
        }
        case("dd"): {
          return day.number.full
        }
        case("day"):
        case("weekday"): {
          return day.text
        }

        //Match month
        case("month"): {
          return month.text
        }
        case("MM"): {
          return month.number
        }

        //Match year
        case("yy"):
        case("YY"): {
          return year.number.short
        }
        case("yyyy"):
        case("YYYY"): {
          return year.number.full
        }

        //Match hours
        case("hh"): {
          return time.hours.military
        }
        case("h"): {
          return time.hours.standard
        }

        //Match minutes
        case("mm"): {
          return time.minutes
        }
        
        default: {
          return matched
        }
      }
    })

    return timeString.join('')
  }