การคำนวณวันที่ในอนาคตหรืออดีต

Arduino:
การคำนวณวันที่ในอนาคตหรืออดีต

วิธีการ:

Arduino ไม่มีฟังก์ชันวันที่และเวลาในตัว แต่คุณสามารถใช้ไลบรารี “TimeLib.h” เพื่อจัดการการคำนวณวันที่ ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งไลบรารีก่อนใช้ตัวอย่างด้านล่าง

#include <TimeLib.h>

void setup() {
  Serial.begin(9600);
  setTime(10, 0, 0, 25, 3, 2023); // ตั้งเวลาเป็นวันที่ 25 มีนาคม 2023, เวลา 10:00:00
}

void loop() {
  // คำนวณ 10 วันข้างหน้า
  time_t futureTime = now() + 10 * SECS_PER_DAY;
  
  // พิมพ์วันที่ในอนาคต
  Serial.print(day(futureTime));
  Serial.print("/");
  Serial.print(month(futureTime));
  Serial.print("/");
  Serial.println(year(futureTime));

  // คำนวณ 10 วันที่ผ่านมา
  time_t pastTime = now() - 10 * SECS_PER_DAY;
  
  // พิมพ์วันที่ในอดีต
  Serial.print(day(pastTime));
  Serial.print("/");
  Serial.print(month(pastTime));
  Serial.print("/");
  Serial.println(year(pastTime));

  // หลีกเลี่ยงการพิมพ์อย่างต่อเนื่อง
  delay(10000);
}

ตัวอย่างการแสดงผล:

4/4/2023
15/3/2023

ลึกซึ้งยิ่งขึ้น

ก่อนมีโมดูล RTC (นาฬิกาจริง) และไลบรารีอย่าง TimeLib, การรักษาเวลาบน Arduino เป็นการทำงานในระดับพื้นฐานและมักจะดำเนินการด้วยตนเอง เราสามารถคำนวณวันที่ในอดีตหรืออนาคตได้หลายวิธี แต่การใช้ไลบรารีเฉพาะอย่าง TimeLib ทำให้กระบวนการนี้ง่ายขึ้นมาก

ทางเลือกนอกจาก TimeLib รวมถึง “RTClib.h” ที่ให้ความสมบูรณ์มากขึ้นเมื่อใช้กับฮาร์ดแวร์ RTC, หรือฟังก์ชัน millis() ในตัวสำหรับช่วงเวลาสั้น ๆ (พร้อมการจัดการวันที่ด้วยตนเอง) TimeLib จัดการกับปีอธิกสุรทินและเขตเวลา และให้ฟังก์ชันประโยชน์สำหรับการจัดการวันที่ได้อย่างง่ายดาย

เมื่อคำนวณวันที่ในอดีตหรืออนาคต ให้ระวังการเปลี่ยนแปลงของเขตเวลาและการปรับเวลาออมแสงหากคุณทำงานกับนาฬิกาจริงหรือแหล่งเวลาภายนอก บน Arduino, หากไม่มี RTC หรือการเชื่อมต่ออินเทอร์เน็ต คุณจะปกติตั้งเวลาด้วยตนเองหรือผ่านสัญญาณภายนอก (เช่น สัญญาณ GPS หรือวิทยุ)

ดูเพิ่มเติม