Pages

Saturday, December 3, 2011

Tahun Kabisat - 99% Salah Paham?

Apakah tahun 1900 atau tahun 2100 merupakan tahun kabisat?  Jika anda menjawab "YA", tak perlu khawatir karena anda (dan saya) termasuk golongan orang "normal" - sebagian besar orang yang keliru memahami tahun kabisat (leap year).

Jangankan kebanyakan orang, perancang Lotus-123, program spreadsheet paling populer di era 1980-an keliru mengimplementasikan definisi tahun kabisat dengan memasukkan tahun 1900 sebagai tahun kabisat.  Akibatnya Microsoft Excel yang lahir setelah Lotus-123 'terpaksa' sengaja ikut keliru demi untuk menjaga kompatibilitasnya dengan Lotus-123 (lihat Microsoft Support: Excel 2000 incorrectly assumes that the year 1900 is a leap year).

Mengapa salah?
Kebanyakan orang hanya mengingat tahun kabisat sebagai tahun yang habis dibagi 4.  Ini adalah pemahaman pada era sistem kalendar Julian (s/d tahun 1500-an).  Dengan sistem yang dikenalkan oleh Julius Caesar ini, satu tahun pada dasarnya terdiri atas 365 hari.  Namun jumlah ini masih kurang dibandingkan dengan waktu yang dibutuhkan bumi untuk berputar mengelilingi matahari dalam orbitnya (tahun tropis), yakni mendekati 365.25 hari.  Dengan demikian masih dibutuhkan 0.25 = 1/4 hari dalam setahun.  Karena itulah dibuat aturan, empat tahun sekali ditambah satu hari menjadi 366 hari.

Rumusan yang digunakan
Pendekatan 1 tahun = 365.25 hari pada sistem kalender Julian masih berlebih sekitar 11 menit dari perhitungan astronomi sesungguhnya.  Jika diakumulasikan, dalam 128 tahun akan berlebih 1 hari, atau dalam 400 tahun menyimpang berlebih 3 hari.  Inilah yang dijadikan sebagai aturan tambahan pada sistem kalender Gregorian.  Artinya, dalam kurun waktu 400 tahun, aturan tahun kabisat setiap 4 tahun mesti dikurangi 3 hari, sehingga seluruhnya terdapat 100 - 3 = 97 tahun kabisat setiap 400 tahun.  Dengan demikian, definisi tahun kabisat disempurnakan menjadi sebagai berikut:
Tahun kabisat adalah tahun yang habis dibagi 4, namun untuk abad baru (..., 1900, 2000, 2100, ...) mesti juga habis dibagi 400.
Sistem ini mulai diberlakukan pada tahun 1582 dan digunakan sebagai acuan kalender tahun masehi yang lazim digunakan saat ini oleh banyak negara (termasuk Indonesia).  Sistem Gregorian akan menyimpang 1 hari dari tahun tropis dalam kurun waktu 3300 tahun - masih lama sekali...
 
Dengan aturan ini, maka
  • tahun 2004, 2008, 2012, ... adalah tahun kabisat (bukan abad baru, habis dibagi 4),
  • tahun 1900, 2100, 2200, 2300 bukan tahun kabisat karena abad baru namun tak habis dibagi 400,
  • tahun 1600, 2000, 2400, ... adalah tahun kabisat karena abad baru dan kelipatan 400.

Kode program
Untuk memeriksa apakah tahun t tahun kabisat atau bukan, kita bisa mendefinisikannya sebagai berikut:
Tahun t disebut tahun kabisat jika t habis dibagi 4 tetapi tidak habis dibagi 100, atau t habis dibagi 400.
Matlab R2011b telah mengintegrasikan fungsi ly untuk memeriksa status tahun kabisat suatu tahun. Bila fungsi tersebut belum tersedia, dengan mudah kita dapat membuat programnya.
  • Fungsi handle
>> isly = @(yr) ~rem(yr,4) & rem(yr,100) | ~rem(yr,400);
>> isly([1900 2000 2004 2012])

Hasilnya berupa 0 (salah) ataukah 1 (benar).

ans =
     0     1     1     1 
  • M file  
function [status] = isleap(year)
  %isleap(y) is 1 (true) for leap year y, 0 (false) otherwise.
  status = (~rem(year,4) & rem(year,100)) | ~rem(year,400);
end
>> isleap([1900 2000 2004 2012])
ans =
     0     1     1     1 

Pustaka pendukung

0 comments:

Post a Comment