Size: a a a

ESP8266 & ESP32 [RU]

2021 August 03

DS

Dmitriy Salko in ESP8266 & ESP32 [RU]
тут же ничего про день недели нету
источник

AK

Andy Korg in ESP8266 & ESP32 [RU]
UNIX-время легко конвертируется в "человекочитаемое" с помощью функций описанных в time.h
https://ru.wikipedia.org/wiki/Time.h
источник

DS

Dmitriy Salko in ESP8266 & ESP32 [RU]
Человек же сказал что у него сейчас подсчет дней с воскресенья а хочет с понедельника)
источник

AK

Andy Korg in ESP8266 & ESP32 [RU]
да, это проблема. Тут я пас :)
источник

DS

Dmitriy Salko in ESP8266 & ESP32 [RU]
Если подсчет дней уже есть (пускай и с воскресенья), то можно вот таким костылем преобразовать:
new_week_day = (week_day + 6) % 7

Но это если воскресенье == 0
А в той библиотеке TimeLib воскресенье == 1
Для нее подойдет:
new_week_day = (week_day + 5) % 7
Только надо предварительно проверить что день недели != 0 (я так понимаю он получается если какая-то ошибка)
источник

AK

Andy Korg in ESP8266 & ESP32 [RU]
вы че блин, единицу прибавить к стандартному и все
источник

DS

Dmitriy Salko in ESP8266 & ESP32 [RU]
А что делать с получившимся восьмым днем недели?
источник

AK

Andy Korg in ESP8266 & ESP32 [RU]
разница только в нумерации дней недели и все:
0 1 2 3 4 5 6
в п в с ч п с
1 2 3 4 5 6 7
источник

DS

Dmitriy Salko in ESP8266 & ESP32 [RU]
Ну, так-то оно и есть. Но если нужно где-то напечатать день недели, то вы предлагаете сперва вывести эту табличку и чтобы пользователь уже сам в уме пересчитывал?)
источник

ВЛ

Владимир Лапшин... in ESP8266 & ESP32 [RU]
Если перевалили за 7 вычесть 7 не?
источник

DS

Dmitriy Salko in ESP8266 & ESP32 [RU]
Да, так и надо. Просто вон те короткие преобразования делают это в одну строку
источник

AK

Andy Korg in ESP8266 & ESP32 [RU]
Берем стандартное время - преобразуем в tm структуру и прибавляем к tm_wday еденицу. что тут сложного?
источник

ВЛ

Владимир Лапшин... in ESP8266 & ESP32 [RU]
Не знаю как будет эффективнее проверить что не 0 прибавить число взять остаток или прибавить проверить вычесть.
источник

ВЛ

Владимир Лапшин... in ESP8266 & ESP32 [RU]
Сложность с последним днём недели
источник

AK

Andy Korg in ESP8266 & ESP32 [RU]
какая?
источник

ВЛ

Владимир Лапшин... in ESP8266 & ESP32 [RU]
Воскресенье =0
Надо 7
Пин = 1 надо 0
источник

DS

Dmitriy Salko in ESP8266 & ESP32 [RU]
Если воскресенье == 1 (как в упомянутом выше случае), а из этого нужно получить  понедельник == 0 (либо 1, смотря что нужно с этим делать). Куда нужно прибавлять единицу?
источник

AK

Andy Korg in ESP8266 & ESP32 [RU]
Пример вывода:
//show week day, date and month
tmLocal now;
localTm(&now);
sprintf(description, "%s %d %s %s", week_name_full[now.tm_wday], now.tm_mday, month_name_full[now.tm_mon], BLANK_SCREEN);
массив строк week_name_full содержит имена дней недели, в вашем случае это будут цифры, а не буквы
источник

DS

Dmitriy Salko in ESP8266 & ESP32 [RU]
Оригинальный вопрос был не про вывод строки, а про получение номера дня недели (начиная с понедельника). Я постарался на него ответить (двумя способами)
источник

AK

Andy Korg in ESP8266 & ESP32 [RU]
ок
источник