Hello,
I am going to program the change of time for standard time / summer time for France. I found an easy algorithm and I have to code it. Could you confirm it is not already done in the Teensyduino libraries?
Other question, for testing I change date of my computer to a later date and now I have to stay after this date to compile change in my code. How to purge executable files to force recompile the code at the date of today?
When I program a Teensy 3 with RTC feature for the first time, it take automatically the local time of the Linux host computer. Is there a way to change it by the UTC time without recompiling the Teensyduino toolchain? I ask to avoid to send the T+timestamp message...
With best regards,
Thanks in advance,
Vincent
EDIT: add piece of code :
I am going to program the change of time for standard time / summer time for France. I found an easy algorithm and I have to code it. Could you confirm it is not already done in the Teensyduino libraries?
Other question, for testing I change date of my computer to a later date and now I have to stay after this date to compile change in my code. How to purge executable files to force recompile the code at the date of today?
When I program a Teensy 3 with RTC feature for the first time, it take automatically the local time of the Linux host computer. Is there a way to change it by the UTC time without recompiling the Teensyduino toolchain? I ask to avoid to send the T+timestamp message...
With best regards,
Thanks in advance,
Vincent
EDIT: add piece of code :
#include <TimeLib.h>
#define MARCH 3
#define OCTOBER 10
void setup() {
setup_rtc();
time_t t_utc, t_loc, t;
char m;
int tmp, k, y, d;
char isSummerTime = false;
for (int j = 0; j <= 366 * 5; j++) {
update_rtc();
t_utc = now();
t_utc += 3600 * 24 * j;
t = t_utc;
m = month(t);
if (m < MARCH || m > OCTOBER) isSummerTime = false;
else if (m > MARCH && m < OCTOBER) isSummerTime = true;
else if (m == MARCH) {
//compute date of the change to Summer
k = ((497 * (year(t) - 2000)) / 400);
if (year(t) % 4 == 0) k++;
d = 31 - (5 + k) % 7;
if (day(t) < d) isSummerTime = false;
else isSummerTime = true;
} else { // (m == OCTOBER)
//compute date of the change to Winter
k = ((497 * (year(t) - 2000)) / 400);
if (year(t) % 4 == 0) k++;
d = 31 - (2 + k) % 7;
if (day(t) >= d) isSummerTime = false;
else isSummerTime = true;
}
if (isSummerTime) t_loc = t_utc + 7200; // +2H00
else t_loc = t_utc + 3600; // +1H00
if (day(t) == d) {
if (isSummerTime) Serial.print(">> ");
else Serial.print("<< ");
Serial.print(hour(t));
printDigits(minute(t));
printDigits(second(t));
Serial.print(" ");
Serial.print(day(t));
Serial.print(" ");
Serial.print(month(t));
Serial.print(" ");
Serial.print(year(t));
Serial.print(" UTC - ");
Serial.print(hour(t_loc));
printDigits(minute(t_loc));
printDigits(second(t_loc));
Serial.print(" ");
Serial.print(day(t_loc));
Serial.print(" ");
Serial.print(month(t_loc));
Serial.print(" ");
Serial.print(year(t_loc));
if (isSummerTime) Serial.println(" FR SUMMER");
else Serial.println(" FR WINTER");
}
}
}
Last edited: