Derse geri dön

Kaç gün önce?

önem: 4

kacGunOnce(tarih,gün) adında bir fonksiyon ile verilen tarih'ten gün kadar öncesini bulunuz.

Örneğin, eğer bu gün 20’si ise, kacGunOnce(new Date(),1) size 19 döndürmeli. Yine kacGunOnce(new Date(),2) size 18 döndermeli.

Should also work over months/years reliably:

let tarih = new Date(2015, 0, 2);

alert( kacGunOnce(tarih, 1) ); // 1, (1 Ocak 2015)
alert( kacGunOnce(tarih, 2) ); // 31, (31 Aralık 2014)
alert( kacGunOnce(tarih, 365) ); // 2, (2 Ocak 2014)

Not: Fonksiyon verilen tarih üzerinde oynama yapmamalıdır.

Testler ile korunaklı olan aç.

Yapacağımız işlem: verilen tarih'ten istenen gün kadar çıkarmaktır:

function kacGunOnce(tarih, gun) {
  tarih.setDate(tarih.getDate() - gun);
  return tarih.getDate();
}

… Fakat fonksiyon tarih'i değiştirmemelidir. Bu önemlidir çünkü dışarıdaki kod gönderilen tarihin aynı kaldığını varsaymaktadır.

Bunu uygulayabilmek için tarih objesinin klonunu almak mümkündür:

function kacGunOnce(tarih, gun) {
  let tarihKopyasi = new Date(tarih);

  tarihKopyasi.setDate(tarih.getDate() - gun);
  return tarihKopyasi.getDate();
}

let tarih = new Date(2015, 0, 2);

alert( kacGunOnce(tarih, 1) ); // 1, (1 Ocak 2015)
alert( kacGunOnce(tarih, 2) ); // 31, (31 Aralık 2014)
alert( kacGunOnce(tarih, 365) ); // 2, (2 Ocak 2014)
function kacGunOnce(tarih, gun) {
  let tarihKopyasi = new Date(tarih);

  tarihKopyasi.setDate(tarih.getDate() - gun);
  return tarihKopyasi.getDate();
}

Çözümü testler korunaklı alanda olacak şekilde aç.