@@ -99,6 +99,9 @@ String OPEN_WEATHER_MAP_LANGUAGE = "de";
9999const uint8_t MAX_FORECASTS = 4 ;
100100
101101const 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
104107const 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