The Problem

Jadi, saya mau bikin option dalam select otomatis selected sesuai dengan bulan saat ini (Februari).

  <label for="bulan">Bulan</label><br>
  <select name="bulan" id="input-bulan">
    <option value="Januari" data-bulan="1">Januari</option>
    <option value="Februari" data-bulan="2">Februari</option>
    <option value="Maret" data-bulan="3">Maret</option>
    <option value="April" data-bulan="4">April</option>
    <option value="Mei" data-bulan="5">Mei</option>
    <option value="Juni" data-bulan="6">Juni</option>
    <option value="Juli" data-bulan="7">Juli</option>
    <option value="Agustus" data-bulan="8">Agustus</option>
    <option value="September" data-bulan="9">September</option>
    <option value="Oktober" data-bulan="10">Oktober</option>
    <option value="November" data-bulan="11">November</option>
    <option value="Desember" data-bulan="12">Desember</option>
  </select><br><br>

Saya pake itu attribute data-bulan biar gampil diambil pake JQuery.

const month = date.getMonth();

$("#input-bulan option").each(function(){
  if ($(this).data('bulan') == month) {
    $(this).attr("selected", "selected");
  }
});

Tapi eh tetapi, kok yang selected Januari melulu?
saya coba itu variable month di console.log()

console.log(month);

// 1

Sianjing, ternyata hasilnya 1. Kok 1 sih? Kan kalau di PHP biasanya nomor bulan itu kalau Februari ya 02.

Lalu, saya search di duckduckgo kenapa getMonth pada bulan Februari itu hasilnya 1. Maka saya dapat link ke tautan stackoverflow ini.

Mari saya terjemahkan jawaban dari Bang SomeShinyObject yang cukup masuk akal.

Mengapa getMonth pada Javascript dimulai dari 0

Terjemahan atas jawaban SomeShinyObject terhadap pertanyaan dari PrimeLens yang bisa dilihat pada tautan berikut

Saya berasumsi itu karena akan lebih mudah untuk memberi referensi dalam susunan nama array. Contoh

var months = ["January", "February", "March", "April", "May", "June", "July",
         "August", "September", "October", "November", "December"];

var d = new Date();

var namedMonth = months[d.getMonth()];

Apabila getMonth() mengembalikan nilai 1-12, maka programmer harus melakukan d.getMonth()-1 setiap kali ingin memiliku nama bulan yang keren.

Hari-hari dalam bulan tidak memiliki “nama” yang spesifik. getDate() returns 1-(28-31). Kita biasanya hanya merujuk hari dengan nomor saja.

Konsep yang sama seperti getMonth juga diterapkan pada getDay(), yang mengembalikan nilai 0-6 berdasarkan hari dalam satu minggu.

var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];

var namedDay = days[d.getDay()];

Maka, semua bisa dirangkum dalam hal seperti ini:

console.log("Month: month[" + d.getMonth() + "]: " + namedMonth); 
//Month: month[3]:  April
console.log("Day: days[" + d.getDay() + "]: " + namedDay); 
// Day: days[4] : Thursday 

The Solution

Setelah saya baca itu jawaban si Bang SomeShinyObject, ya udah karena males ganti nomor-nomor dalam data-bulan, saya giniin aja:

const month = date.getMonth()+1;

Dan, voila!
Semua berjalan sesuai rencana. Bulan Februari selected dengan otomatis.