Menentukan nama hari dari tanggal [Arduino]

Untuk memperoleh nama hari dari tanggal yang diberikan dapat mengikuti dengan langkah berikut:

  1. Menetapkan basis hari, misalnya 1 januari 2000 jatuh pada hari sabtu = 7
  2. Menghitung jumlah hari dari basis hari hingga tanggal yang ditentukan dengan memperhitungkan:
    • tahun x 365
    • jumlah tahun kabisat
    • jumlah hari dalam setiap bulan
    • tanggal
  3. 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;
}

Leave a Reply

Your email address will not be published. Required fields are marked *