1
0
mirror of https://github.com/esphome/esphome.git synced 2026-02-08 08:41:59 +00:00

bot review

This commit is contained in:
J. Nick Koston
2026-01-29 23:49:07 -06:00
parent aa91cdd984
commit 695df9b979
3 changed files with 12 additions and 6 deletions

View File

@@ -14,8 +14,8 @@
#include <sys/time.h>
#endif
#include <cerrno>
#include <cinttypes>
#include <cstdlib>
namespace esphome::time {
@@ -31,10 +31,11 @@ void RealTimeClock::dump_config() {
ESP_LOGCONFIG(TAG, "Timezone: UTC%+d:%02d", std_hours, std_mins);
if (tz.has_dst) {
int dst_hours = -tz.dst_offset_seconds / 3600;
int dst_mins = abs(tz.dst_offset_seconds % 3600) / 60;
// Always use M format - tzdata and aioesphomeapi only generate M format rules
ESP_LOGCONFIG(TAG, " DST: UTC%+d, M%d.%d.%d/%" PRId32 " - M%d.%d.%d/%" PRId32, dst_hours, tz.dst_start.month,
tz.dst_start.week, tz.dst_start.day_of_week, tz.dst_start.time_seconds / 3600, tz.dst_end.month,
tz.dst_end.week, tz.dst_end.day_of_week, tz.dst_end.time_seconds / 3600);
ESP_LOGCONFIG(TAG, " DST: UTC%+d:%02d, M%d.%d.%d/%" PRId32 " - M%d.%d.%d/%" PRId32, dst_hours, dst_mins,
tz.dst_start.month, tz.dst_start.week, tz.dst_start.day_of_week, tz.dst_start.time_seconds / 3600,
tz.dst_end.month, tz.dst_end.week, tz.dst_end.day_of_week, tz.dst_end.time_seconds / 3600);
}
#endif
auto time = this->now();

View File

@@ -29,6 +29,10 @@ class RealTimeClock : public PollingComponent {
/// Set the time zone from a character buffer with known length.
/// The buffer does not need to be null-terminated.
void set_timezone(const char *tz, size_t len) {
if (tz == nullptr) {
this->apply_timezone_(nullptr);
return;
}
// Stack buffer - TZ strings are typically short but allow up to 128
char buf[128];
if (len >= sizeof(buf))

View File

@@ -782,13 +782,14 @@ TEST_P(LibcVerificationTest, MatchesLibc) {
ASSERT_TRUE(parse_posix_tz(tz_str, tz));
// Our implementation
struct tm our_tm;
epoch_to_local_tm(epoch, tz, &our_tm);
struct tm our_tm {};
ASSERT_TRUE(epoch_to_local_tm(epoch, tz, &our_tm));
// libc implementation
setenv("TZ", tz_str, 1);
tzset();
struct tm *libc_tm = localtime(&epoch);
ASSERT_NE(libc_tm, nullptr);
EXPECT_EQ(our_tm.tm_year, libc_tm->tm_year);
EXPECT_EQ(our_tm.tm_mon, libc_tm->tm_mon);