Skip to content

Commit 081decb

Browse files
authored
Merge pull request G6EJD#168 from skiphansen/fix_forecast_timezone_adj
Fix UTC to local time conversion error in DisplayForecastWeather for …
2 parents f09b7ad + fc8888a commit 081decb

File tree

13 files changed

+33
-33
lines changed

13 files changed

+33
-33
lines changed

Waveshare_2_9_v4.ino

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ void DisplayWeather() { // 2.9" e-paper display is 296x128 resolutio
168168
String MidTime = "09:00" + String((Units == "M" ? "" : "a"));
169169
String FinishTime = "10:00" + String((Units == "M" ? "" : "a"));
170170
do {
171-
String Ftime = ConvertUnixTime(WxForecast[Forecast].Dt).substring(0, (Units == "M" ? 5 : 6));
171+
String Ftime = ConvertUnixTime(WxForecast[Forecast].Dt + WxForecast[Forecast].Timezone).substring(0, (Units == "M" ? 5 : 6));
172172
if (Ftime == StartTime || Ftime == MidTime || Ftime == FinishTime) {
173173
DisplayForecastWeather(18, 104, Forecast, Dposition, 57); // x,y coordinates, forecast number, position, spacing width
174174
Dposition++;
@@ -216,9 +216,9 @@ void DisplayAstronomySection(int x, int y) {
216216
display.drawRect(x, y + 13, 126, 51, GxEPD_BLACK);
217217
u8g2Fonts.setFont(u8g2_font_helvB08_tf);
218218
SunRise(x + 64, y + 23);
219-
drawString(x + 80, y + 20, ConvertUnixTime(WxConditions[0].Sunrise).substring(0, (Units == "M" ? 5 : 7)), LEFT);
219+
drawString(x + 80, y + 20, ConvertUnixTime(WxConditions[0].Sunrise + WxConditions[0].Timezone).substring(0, (Units == "M" ? 5 : 7)), LEFT);
220220
SunSet(x + 64, y + 38);
221-
drawString(x + 80, y + 35, ConvertUnixTime(WxConditions[0].Sunset).substring(0, (Units == "M" ? 5 : 7)), LEFT);
221+
drawString(x + 80, y + 35, ConvertUnixTime(WxConditions[0].Sunset + WxConditions[0].Timezone).substring(0, (Units == "M" ? 5 : 7)), LEFT);
222222
time_t now = time(NULL);
223223
struct tm * now_utc = gmtime(&now);
224224
const int day_utc = now_utc->tm_mday;
@@ -392,8 +392,8 @@ void GetHighsandLows() {
392392
String StartTime = "08:00" + String((Units == "M" ? "" : "a"));
393393
String FinishTime = "10:00" + String((Units == "M" ? "" : "a"));
394394
for (int r = 0; r < max_readings; r++) {
395-
if (ConvertUnixTime(WxForecast[r].Dt).substring(0, (Units == "M" ? 5 : 6)) >= StartTime && ConvertUnixTime(WxForecast[r].Dt).substring(0, (Units == "M" ? 5 : 6)) <= FinishTime) { // found first period in day
396-
HLReadings[Day].Time = ConvertUnixTime(WxForecast[r].Dt).substring(0, (Units == "M" ? 5 : 6));
395+
if (ConvertUnixTime(WxForecast[r].Dt + WxForecast[r].Timezone).substring(0, (Units == "M" ? 5 : 6)) >= StartTime && ConvertUnixTime(WxForecast[r].Dt + WxForecast[r].Timezone).substring(0, (Units == "M" ? 5 : 6)) <= FinishTime) { // found first period in day
396+
HLReadings[Day].Time = ConvertUnixTime(WxForecast[r].Dt + WxForecast[r].Timezone).substring(0, (Units == "M" ? 5 : 6));
397397
for (int InDay = 0; InDay < 8; InDay++) { // 00:00 to 21:00 is 8 readings
398398
if (r + InDay < max_readings) {
399399
if (WxForecast[r + InDay].High > HLReadings[Day].High) {

examples/M5_CoreInk/M5_CoreInk.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ void DisplayForecastWeather(int x, int y, int offset, int index) {
206206
display.drawRect(x, y, offset, 65, GxEPD_BLACK);
207207
display.drawLine(x, y + 13, x + offset, y + 13, GxEPD_BLACK);
208208
DisplayWxIcon(x + offset / 2 + 1, y + 35, WxForecast[index].Icon, SmallIcon);
209-
drawString(x + offset / 2, y + 3, String(ConvertUnixTime(WxForecast[index].Dt + WxConditions[0].Timezone).substring(0,5)), CENTER);
209+
drawString(x + offset / 2, y + 3, String(ConvertUnixTime(WxForecast[index].Dt + WxForecast[index].Timezone).substring(0,5)), CENTER);
210210
drawString(x + offset / 2, y + 50, String(WxForecast[index].High, 0) + "/" + String(WxForecast[index].Low, 0), CENTER);
211211
}
212212
//#########################################################################################

examples/OWM_75_epaper_v16_7/OWM_75_epaper_v16_7.ino

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,8 @@ void DisplayPrecipitationSection(int x, int y, int pwidth, int pdepth) {
307307
void DisplayAstronomySection(int x, int y) {
308308
display.drawRect(x, y + 13, 173, 52, GxEPD_BLACK);
309309
u8g2Fonts.setFont(u8g2_font_helvR08_tf);
310-
drawString(x + 4, y + 18, ConvertUnixTime(WxConditions[0].Sunrise).substring(0, 5) + " " + TXT_SUNRISE, LEFT);
311-
drawString(x + 4, y + 32, ConvertUnixTime(WxConditions[0].Sunset).substring(0, 5) + " " + TXT_SUNSET, LEFT);
310+
drawString(x + 4, y + 18, ConvertUnixTime(WxConditions[0].Sunrise + WxConditions[0].Timezone).substring(0, 5) + " " + TXT_SUNRISE, LEFT);
311+
drawString(x + 4, y + 32, ConvertUnixTime(WxConditions[0].Sunset + WxConditions[0].Timezone).substring(0, 5) + " " + TXT_SUNSET, LEFT);
312312
time_t now = time(NULL);
313313
struct tm * now_utc = gmtime(&now);
314314
const int day_utc = now_utc->tm_mday;

examples/Waveshare_1_54/Waveshare_1_54.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ void DisplayForecastWeather(int x, int y, int offset, int index) {
208208
display.drawRect(x, y, offset, 65, GxEPD_BLACK);
209209
display.drawLine(x, y + 13, x + offset, y + 13, GxEPD_BLACK);
210210
DisplayWxIcon(x + offset / 2 + 1, y + 35, WxForecast[index].Icon, SmallIcon);
211-
drawString(x + offset / 2, y + 3, String(ConvertUnixTime(WxForecast[index].Dt + WxConditions[0].Timezone).substring(0,5)), CENTER);
211+
drawString(x + offset / 2, y + 3, String(ConvertUnixTime(WxForecast[index].Dt + WxForecast[index].Timezone).substring(0,5)), CENTER);
212212
drawString(x + offset / 2, y + 50, String(WxForecast[index].High, 0) + "/" + String(WxForecast[index].Low, 0), CENTER);
213213
}
214214
//#########################################################################################

examples/Waveshare_2_13_T5/Waveshare_2_13_T5.ino

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,8 +226,8 @@ void Draw_3hr_Forecast(int x, int y, int index) {
226226
//#########################################################################################
227227
void DisplayAstronomySection(int x, int y) {
228228
u8g2Fonts.setFont(u8g2_font_helvB08_tf);
229-
drawString(x, y, ConvertUnixTime(WxConditions[0].Sunrise).substring(0, (Units == "M"?5:7)) + " " + TXT_SUNRISE, LEFT);
230-
drawString(x, y + 16, ConvertUnixTime(WxConditions[0].Sunset).substring(0, (Units == "M"?5:7)) + " " + TXT_SUNSET, LEFT);
229+
drawString(x, y, ConvertUnixTime(WxConditions[0].Sunrise + WxConditions[0].Timezone).substring(0, (Units == "M"?5:7)) + " " + TXT_SUNRISE, LEFT);
230+
drawString(x, y + 16, ConvertUnixTime(WxConditions[0].Sunset + WxConditions[0].Timezone).substring(0, (Units == "M"?5:7)) + " " + TXT_SUNSET, LEFT);
231231
time_t now = time(NULL);
232232
struct tm * now_utc = gmtime(&now);
233233
const int day_utc = now_utc->tm_mday;

examples/Waveshare_2_7/Waveshare_2_7.ino

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,8 @@ void DisplayAstronomySection(int x, int y) {
222222
//display.drawLine(x, y + 13, x + 168, y + 13 , GxEPD_BLACK);
223223
display.drawLine(x + 155, y + 13, x + 155, y + 13 + 50, GxEPD_BLACK);
224224
u8g2Fonts.setFont(u8g2_font_helvB08_tf);
225-
drawString(x + 5, y + 18, ConvertUnixTime(WxConditions[0].Sunrise).substring(0, (Units == "M"?5:7)) + " " + TXT_SUNRISE, LEFT);
226-
drawString(x + 5, y + 34, ConvertUnixTime(WxConditions[0].Sunset).substring(0, (Units == "M"?5:7)) + " " + TXT_SUNSET, LEFT);
225+
drawString(x + 5, y + 18, ConvertUnixTime(WxConditions[0].Sunrise + WxConditions[0].Timezone).substring(0, (Units == "M"?5:7)) + " " + TXT_SUNRISE, LEFT);
226+
drawString(x + 5, y + 34, ConvertUnixTime(WxConditions[0].Sunset + WxConditions[0].Timezone).substring(0, (Units == "M"?5:7)) + " " + TXT_SUNSET, LEFT);
227227
time_t now = time(NULL);
228228
struct tm * now_utc = gmtime(&now);
229229
const int day_utc = now_utc->tm_mday;

examples/Waveshare_2_9/Waveshare_2_9_v4.ino

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ void DisplayWeather() { // 2.9" e-paper display is 296x128 resolutio
168168
String MidTime = "09:00" + String((Units == "M" ? "" : "a"));
169169
String FinishTime = "10:00" + String((Units == "M" ? "" : "a"));
170170
do {
171-
String Ftime = ConvertUnixTime(WxForecast[Forecast].Dt).substring(0, (Units == "M" ? 5 : 6));
171+
String Ftime = ConvertUnixTime(WxForecast[Forecast].Dt + WxForecast[Forecast].Timezone).substring(0, (Units == "M" ? 5 : 6));
172172
if (Ftime == StartTime || Ftime == MidTime || Ftime == FinishTime) {
173173
DisplayForecastWeather(18, 104, Forecast, Dposition, 57); // x,y coordinates, forecast number, position, spacing width
174174
Dposition++;
@@ -216,9 +216,9 @@ void DisplayAstronomySection(int x, int y) {
216216
display.drawRect(x, y + 13, 126, 51, GxEPD_BLACK);
217217
u8g2Fonts.setFont(u8g2_font_helvB08_tf);
218218
SunRise(x + 64, y + 23);
219-
drawString(x + 80, y + 20, ConvertUnixTime(WxConditions[0].Sunrise).substring(0, (Units == "M" ? 5 : 7)), LEFT);
219+
drawString(x + 80, y + 20, ConvertUnixTime(WxConditions[0].Sunrise + WxConditions[0].Timezone).substring(0, (Units == "M" ? 5 : 7)), LEFT);
220220
SunSet(x + 64, y + 38);
221-
drawString(x + 80, y + 35, ConvertUnixTime(WxConditions[0].Sunset).substring(0, (Units == "M" ? 5 : 7)), LEFT);
221+
drawString(x + 80, y + 35, ConvertUnixTime(WxConditions[0].Sunset + WxConditions[0].Timezone).substring(0, (Units == "M" ? 5 : 7)), LEFT);
222222
time_t now = time(NULL);
223223
struct tm * now_utc = gmtime(&now);
224224
const int day_utc = now_utc->tm_mday;
@@ -392,8 +392,8 @@ void GetHighsandLows() {
392392
String StartTime = "08:00" + String((Units == "M" ? "" : "a"));
393393
String FinishTime = "10:00" + String((Units == "M" ? "" : "a"));
394394
for (int r = 0; r < max_readings; r++) {
395-
if (ConvertUnixTime(WxForecast[r].Dt).substring(0, (Units == "M" ? 5 : 6)) >= StartTime && ConvertUnixTime(WxForecast[r].Dt).substring(0, (Units == "M" ? 5 : 6)) <= FinishTime) { // found first period in day
396-
HLReadings[Day].Time = ConvertUnixTime(WxForecast[r].Dt).substring(0, (Units == "M" ? 5 : 6));
395+
if (ConvertUnixTime(WxForecast[r].Dt + WxForecast[r].Timezone).substring(0, (Units == "M" ? 5 : 6)) >= StartTime && ConvertUnixTime(WxForecast[r].Dt + WxForecast[r].Timezone).substring(0, (Units == "M" ? 5 : 6)) <= FinishTime) { // found first period in day
396+
HLReadings[Day].Time = ConvertUnixTime(WxForecast[r].Dt + WxForecast[r].Timezone).substring(0, (Units == "M" ? 5 : 6));
397397
for (int InDay = 0; InDay < 8; InDay++) { // 00:00 to 21:00 is 8 readings
398398
if (r + InDay < max_readings) {
399399
if (WxForecast[r + InDay].High > HLReadings[Day].High) {

examples/Waveshare_2_9_T5/Waveshare_2_9_T5.ino

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,8 @@ void Draw_3hr_Forecast(int x, int y, int index) {
185185
void DisplayAstronomySection(int x, int y) {
186186
display.drawRect(x, y + 13, 173, 52, GxEPD_BLACK);
187187
u8g2Fonts.setFont(u8g2_font_helvB08_tf);
188-
drawString(x + 5, y + 18, ConvertUnixTime(WxConditions[0].Sunrise).substring(0, (Units == "M"?5:7)) + " " + TXT_SUNRISE, LEFT);
189-
drawString(x + 5, y + 34, ConvertUnixTime(WxConditions[0].Sunset).substring(0, (Units == "M"?5:7)) + " " + TXT_SUNSET, LEFT);
188+
drawString(x + 5, y + 18, ConvertUnixTime(WxConditions[0].Sunrise + WxConditions[0].Timezone).substring(0, (Units == "M"?5:7)) + " " + TXT_SUNRISE, LEFT);
189+
drawString(x + 5, y + 34, ConvertUnixTime(WxConditions[0].Sunset + WxConditions[0].Timezone).substring(0, (Units == "M"?5:7)) + " " + TXT_SUNSET, LEFT);
190190
time_t now = time(NULL);
191191
struct tm * now_utc = gmtime(&now);
192192
const int day_utc = now_utc->tm_mday;

examples/Waveshare_4_2/Waveshare_4_2.ino

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ void DrawForecastWeather(int x, int y, int index) {
212212
display.drawRect(x, y, 55, 65, GxEPD_BLACK);
213213
display.drawLine(x + 1, y + 13, x + 54, y + 13, GxEPD_BLACK);
214214
DisplayWXicon(x + 28, y + 35, WxForecast[index].Icon, SmallIcon);
215-
drawString(x + 31, y + 3, String(ConvertUnixTime(WxForecast[index].Dt + WxConditions[0].Timezone).substring(0,5)), CENTER);
215+
drawString(x + 31, y + 3, String(ConvertUnixTime(WxForecast[index].Dt + WxForecast[index].Timezone).substring(0,5)), CENTER);
216216
drawString(x + 41, y + 52, String(WxForecast[index].High, 0) + "° / " + String(WxForecast[index].Low, 0) + "°", CENTER);
217217
}
218218
//#########################################################################################
@@ -310,8 +310,8 @@ void DisplayPrecipitationSection(int x, int y) {
310310
void DrawAstronomySection(int x, int y) {
311311
u8g2Fonts.setFont(u8g2_font_helvB08_tf);
312312
display.drawRect(x, y + 64, 167, 48, GxEPD_BLACK);
313-
drawString(x + 7, y + 70, ConvertUnixTime(WxConditions[0].Sunrise).substring(0, (Units == "M" ? 5 : 7)) + " " + TXT_SUNRISE, LEFT);
314-
drawString(x + 7, y + 85, ConvertUnixTime(WxConditions[0].Sunset).substring(0, (Units == "M" ? 5 : 7)) + " " + TXT_SUNSET, LEFT);
313+
drawString(x + 7, y + 70, ConvertUnixTime(WxConditions[0].Sunrise + WxConditions[0].Timezone).substring(0, (Units == "M" ? 5 : 7)) + " " + TXT_SUNRISE, LEFT);
314+
drawString(x + 7, y + 85, ConvertUnixTime(WxConditions[0].Sunset + WxConditions[0].Timezone).substring(0, (Units == "M" ? 5 : 7)) + " " + TXT_SUNSET, LEFT);
315315
time_t now = time(NULL);
316316
struct tm * now_utc = gmtime(&now);
317317
const int day_utc = now_utc->tm_mday;

examples/Waveshare_7_5/Waveshare_7_5.ino

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ void DisplayForecastWeather(int x, int y, int index) {
267267
display.drawRect(x, y, fwidth - 1, 65, GxEPD_BLACK);
268268
display.drawLine(x, y + 13, x + fwidth - 3, y + 13, GxEPD_BLACK);
269269
DisplayConditionsSection(x + fwidth / 2, y + 35, WxForecast[index].Icon, SmallIcon);
270-
drawString(x + fwidth / 2, y + 3, String(ConvertUnixTime(WxForecast[index].Dt + WxConditions[0].Timezone).substring(0,5)), CENTER);
270+
drawString(x + fwidth / 2, y + 3, String(ConvertUnixTime(WxForecast[index].Dt + WxForecast[index].Timezone).substring(0,5)), CENTER);
271271
drawString(x + fwidth / 2, y + 53, String(WxForecast[index].High, 0) + "°/" + String(WxForecast[index].Low, 0) + "°", CENTER);
272272
}
273273
//#########################################################################################
@@ -313,8 +313,8 @@ void DisplayPrecipitationSection(int x, int y, int pwidth, int pdepth) {
313313
void DisplayAstronomySection(int x, int y) {
314314
display.drawRect(x, y + 13, 173, 52, GxEPD_BLACK);
315315
u8g2Fonts.setFont(u8g2_font_helvB08_tf);
316-
drawString(x + 3, y + 18, ConvertUnixTime(WxConditions[0].Sunrise).substring(0, 5) + " " + TXT_SUNRISE, LEFT);
317-
drawString(x + 3, y + 32, ConvertUnixTime(WxConditions[0].Sunset).substring(0, 5) + " " + TXT_SUNSET, LEFT);
316+
drawString(x + 3, y + 18, ConvertUnixTime(WxConditions[0].Sunrise + WxConditions[0].Timezone).substring(0, 5) + " " + TXT_SUNRISE, LEFT);
317+
drawString(x + 3, y + 32, ConvertUnixTime(WxConditions[0].Sunset + WxConditions[0].Timezone).substring(0, 5) + " " + TXT_SUNSET, LEFT);
318318
time_t now = time(NULL);
319319
struct tm * now_utc = gmtime(&now);
320320
const int day_utc = now_utc->tm_mday;

0 commit comments

Comments
 (0)