<div id="app">
  <select v-model="selectedMonth">
    <option v-for="(month, index) in months"
            :value="index + 1">{{ month }}</option>
  </select>
  <select v-model="selectedYear">
    <option v-for="year in years"
            :value="year">{{ year }}</option>
  </select>
  <h1>{{ dayOfWeek }}</h1>
  <h1>{{ dayOfWeekName }}</h1>
  
  <h1>{{ startWithSunday }}</h1>
  <h1>{{ dayOfWeekName }}</h1>
</div>
html, body {
  display: grid;
  justify-content: center;
  align-content: center;
  height: 100%;
}

#app {
  display: grid;
  grid-gap: 5px;
  grid-template-columns: 1fr 1fr;
}

h1 {
  text-align: center;
}
const DateTime = luxon.DateTime
const Info = luxon.Info

const app = Vue.createApp({
  data: function () {
    return {
      months: Info.months(),
      years: [2021, 2022, 2023, 2024, 2025],
      selectedMonth: 8,
      selectedYear: 2021
    }
  },
  computed: {
    dayOfWeek: function () {
      return DateTime.local(this.selectedYear, this.selectedMonth).weekday
    },
    startWithSunday: function () {
      const date = DateTime.local(this.selectedYear, this.selectedMonth)
      return date.weekday === 7 ? 0 : date.weekday
    },
    dayOfWeekName: function () {
      return DateTime.local(this.selectedYear, this.selectedMonth).weekdayLong
    }
  }
})

const vm = app.mount('#app')

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdn.jsdelivr.net/npm/luxon@1.26.0/build/global/luxon.min.js
  2. https://unpkg.com/vue@next