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:

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");
  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 *