Tanggal berapakah beberapa hari yang lalu?
Buatlah sebuah fungsi getDateAgo(tanggal, hari)
yang mengembalikan beberapa hari
yang telah berlalu dari sebuah tanggal
.
Sebagai contoh, apabila hari ini tanggal 20, maka getDateAgo(new Date(), 1)
harus mengembalikan tanggal 19 dan getDateAgo(new Date(), 2)
harus mengembalikan tanggal 18.
Harus bekerja dengan baik dan dapat diandalkan untuk hari=365
atau lebih:
let tanggal = new Date(2015, 0, 2);
alert( getDateAgo(tanggal, 1) ); // 1, (1 Jan 2015)
alert( getDateAgo(tanggal, 2) ); // 31, (31 Des 2014)
alert( getDateAgo(tanggal, 365) ); // 2, (2 Jan 2014)
P.S. Fungsi tidak boleh mengubah tanggal
yang diberikan.
Idenya mudah: Kurangi tanggal
dengan jumlah hari yang diberikan.
function getDateAgo(tanggal, hari) {
tanggal.setDate(tanggal.getDate() - hari);
return tanggal.getDate();
}
…Namun fungsi tersebut tidak boleh mengubah tanggal
yang diberikan. Ini adalah yang terpenting, karena kode di luar yang memberikan kita tanggal tidak mengira tanggal tersebut akan berubah.
Untuk mengimplementasikannya kita akan menduplikasi tanggal tersebut, seperti ini:
function getDateAgo(tanggal, hari) {
let tanggalCopy = new Date(tanggal);
tanggalCopy.setDate(tanggal.getDate() - hari);
return tanggalCopy.getDate();
}
let tanggal = new Date(2015, 0, 2);
alert( getDateAgo(tanggal, 1) ); // 1, (1 Jan 2015)
alert( getDateAgo(tanggal, 2) ); // 31, (31 Des 2014)
alert( getDateAgo(tanggal, 365) ); // 2, (2 Jan 2014)