Skip to content

Commit 201fa29

Browse files
committed
Add options for 12 hour time display and alternate date orders
1 parent 3037ab0 commit 201fa29

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

examples/WeatherStationDemo/WeatherStationDemo.ino

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ String OPEN_WEATHER_MAP_LANGUAGE = "de";
9999
const uint8_t MAX_FORECASTS = 4;
100100

101101
const boolean IS_METRIC = true;
102+
const boolean IS_24HOUR = true;
103+
enum dateOrders {DMY, MDY, YMD};
104+
const dateOrders dateOrder = DMY;
102105

103106
// Adjust according to your language
104107
const String WDAY_NAMES[] = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
@@ -261,17 +264,24 @@ void drawDateTime(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, in
261264
struct tm* timeInfo;
262265
timeInfo = localtime(&now);
263266
char buff[16];
264-
265-
267+
266268
display->setTextAlignment(TEXT_ALIGN_CENTER);
267269
display->setFont(ArialMT_Plain_10);
268270
String date = WDAY_NAMES[timeInfo->tm_wday];
269271

270-
sprintf_P(buff, PSTR("%s, %02d/%02d/%04d"), WDAY_NAMES[timeInfo->tm_wday].c_str(), timeInfo->tm_mday, timeInfo->tm_mon+1, timeInfo->tm_year + 1900);
272+
if(dateOrder == DMY) sprintf_P(buff, PSTR("%s, %02d/%02d/%04d"), WDAY_NAMES[timeInfo->tm_wday].c_str(), timeInfo->tm_mday, timeInfo->tm_mon+1, timeInfo->tm_year + 1900);
273+
else if (dateOrder == MDY) sprintf_P(buff, PSTR("%s, %d/%d/%04d"), WDAY_NAMES[timeInfo->tm_wday].c_str(), timeInfo->tm_mon+1, timeInfo->tm_mday, timeInfo->tm_year + 1900);
274+
else if (dateOrder == YMD) sprintf_P(buff, PSTR("%s, %04d/%02d/%02d"), WDAY_NAMES[timeInfo->tm_wday].c_str(), timeInfo->tm_year + 1900, timeInfo->tm_mday, timeInfo->tm_mon+1);
271275
display->drawString(64 + x, 5 + y, String(buff));
272276
display->setFont(ArialMT_Plain_24);
273277

274-
sprintf_P(buff, PSTR("%02d:%02d:%02d"), timeInfo->tm_hour, timeInfo->tm_min, timeInfo->tm_sec);
278+
if(IS_24HOUR) sprintf_P(buff, PSTR("%02d:%02d:%02d"), timeInfo->tm_hour, timeInfo->tm_min, timeInfo->tm_sec);
279+
else {
280+
uint8_t hour;
281+
hour = timeInfo->tm_hour % 12;
282+
if(hour == 0) hour = 12;
283+
sprintf_P(buff, PSTR("%d:%02d:%02d"), hour, timeInfo->tm_min, timeInfo->tm_sec);
284+
}
275285
display->drawString(64 + x, 15 + y, String(buff));
276286
display->setTextAlignment(TEXT_ALIGN_LEFT);
277287
}
@@ -318,7 +328,14 @@ void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state) {
318328
struct tm* timeInfo;
319329
timeInfo = localtime(&now);
320330
char buff[14];
321-
sprintf_P(buff, PSTR("%02d:%02d"), timeInfo->tm_hour, timeInfo->tm_min);
331+
332+
if(IS_24HOUR) sprintf_P(buff, PSTR("%02d:%02d"), timeInfo->tm_hour, timeInfo->tm_min);
333+
else {
334+
uint8_t hour;
335+
hour = timeInfo->tm_hour % 12;
336+
if(hour == 0) hour = 12;
337+
sprintf_P(buff, PSTR("%d:%02d"), hour, timeInfo->tm_min);
338+
}
322339

323340
display->setColor(WHITE);
324341
display->setFont(ArialMT_Plain_10);

0 commit comments

Comments
 (0)