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:
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"); Serial.println("https://www.project.semesin.com"); } 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; }