Untuk memperoleh nama hari dari tanggal yang diberikan dapat mengikuti dengan langkah berikut:
- Menetapkan basis hari, misalnya 1 januari 2000 jatuh pada hari sabtu = 7
- Menghitung jumlah hari dari basis hari hingga tanggal yang ditentukan dengan memperhitungkan:
- tahun x 365
- jumlah tahun kabisat
- jumlah hari dalam setiap bulan
- tanggal
- dan terakhir mencari nilai sisa setelah dibagi dengan 7
berikut program atau sketch fungsi yang dapat digunakan:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | String namaHari[] = { "Minggu" , "Senin" , "Selasa" , "Rabu" , "Kamis" , "Jum'at" , "Sabtu" }; uint16_t jumlahHariPerBulan[]={0,31,59,90,120,151,181,212,243,273,304,334}; void setup() { Serial.begin(9600); Serial.println( "fungsi mendapatkan Nama hari dari tanggal yang diberikan" ); } void loop() { byte hari; byte tanggal = 4; byte bulan = 3; byte tahun = 18; hari = hariDariTanggal(tanggal, bulan, tahun); Serial.print(tanggal); Serial.print( "/" ); Serial.print(bulan); Serial.print( "/" ); Serial.print(tahun); Serial.print( " => " ); Serial.print(hari); Serial.print( " : " ); Serial.println(namaHari[hari - 1]); while (1); } //tanggal mulai dari 1 //bulan mulai dari 1 //tahun dua digit //minggu = 1, sabtu = 7 //basis 1 Januari 2000 byte hariDariTanggal(byte tanggal, byte bulan, uint16_t tahun) { uint32_t jumlahHari = tahun * 365; uint16_t tahunKabisat = tahun/4; for (byte i = 0; i < tahun; i++) { if (!(i%4)) { jumlahHari++; } } jumlahHari += jumlahHariPerBulan[bulan-1]; if ( (bulan >= 2) && !(tahun % 4)) { jumlahHari++; } jumlahHari+= tanggal; return ((jumlahHari + 5) % 7) + 1; } |