Selisih dari dua tanggal menggunakan Arduino

Menentukan selisih tanggal menggunakan Arduino bisa memanfaatkan library TimeLib.h, namun metode ini hanya valid dari tahun 1970.

Selisih tanggal ini bisa dipergunakan untuk menentukan umur, hari ulang tahun, hitung mundur suatu kegiatan dan lain-lain.

Mengurang dua tanggal (datetime) pada arduino dengan TimeLib.h diperoleh dari pengurangan jumlah hari pada tanggal-tanggal tersebut terhitung dari 1 Januari 1970. Setelah operasi pengurangan dua tanggal tersebut, hasilnya diperoleh dalam bentuk jumlah hari (integer) untuk selanjutnya dikonversi menjadi hari, bulan dan tahun.

Berikut kode program selisih tanggal dengan arduino:

#include <TimeLib.h>

void setup() {
  Serial.begin(9600);
  Serial.println("Selisih dari dua tanggal menggunakan Arduino");
  Serial.println("https://www.project.semesin.com/");
  Serial.println();
}

void loop() {
                                //dtk,mnt,jam,hari,tgl,bln,tahun
  tmElements_t tanggalPertama = {0,0,0,0,5,9,CalendarYrToTm(1985)};//valid diatas 1970
  tmElements_t tanggalKedua = {0,0,0,0,21,4,CalendarYrToTm(2018)};//valid diatas 1970
  tmElements_t selisih;
  breakTime(makeTime(tanggalKedua) - makeTime(tanggalPertama), selisih);

  Serial.print("Tanggal pertama = ");
  Serial.print(tanggalPertama.Day);
  Serial.print("/");
  Serial.print(tanggalPertama.Month);
  Serial.print("/");
  Serial.println(tmYearToCalendar(tanggalPertama.Year));

  Serial.print("Tanggal kedua = ");
  Serial.print(tanggalKedua.Day);
  Serial.print("/");
  Serial.print(tanggalKedua.Month);
  Serial.print("/");
  Serial.println(tmYearToCalendar(tanggalKedua.Year));

  Serial.print("Selisih = ");
  Serial.print(selisih.Day);
  Serial.print(" hari ");
  Serial.print(selisih.Month);
  Serial.print(" bulan ");
  Serial.print(selisih.Year);
  Serial.println(" tahun");

  while(1);
}

void print2digits(int number) {
  if (number >= 0 && number < 10) {
    Serial.write('0');
  }
  Serial.print(number);
}

hasil serial monitor pengurangan tanggal dengan arduino:

Leave a Reply

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