csm7 0 15 декабря, 2020 Опубликовано 15 декабря, 2020 · Жалоба Доброго времени суток. Такой вопрос. Необходимо к текущему времени в RTC добавить интервал времени. При этом произвести учет даты с учетом количества дней в месяце и высокосного года. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 89 15 декабря, 2020 Опубликовано 15 декабря, 2020 · Жалоба 7 минут назад, csm7 сказал: Необходимо к текущему времени в RTC добавить интервал времени. При этом произвести учет даты с учетом количества дней в месяце и высокосного года. Просто прибавить интервал. Хотя бы микроконтроллер назвали, тогда можно будет протелепатировать что у вас не получается.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
csm7 0 15 декабря, 2020 Опубликовано 15 декабря, 2020 (изменено) · Жалоба микроконтроллер stm32l476 void NewAlarm(void) { RTC_TimeTypeDef intervalTime; intervalTime.Seconds = 40; intervalTime.Minutes = 30; intervalTime.Hours = 11; //24h HAL_RTC_GetTime(&hrtc, &sTime, FORMAT_BIN); HAL_RTC_GetDate(&hrtc, &sDate, FORMAT_BIN); sTime.Seconds += intervalTime.Seconds; sTime.Minutes += intervalTime.Minutes; sTime.Hours += intervalTime.Hours; } Я Вас правильно понимаю, что можно так просто добавить интервал времени и модуль RTC автоматом все учтет. (рассчитает правильное время и дату) Изменено 15 декабря, 2020 пользователем csm7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 15 декабря, 2020 Опубликовано 15 декабря, 2020 · Жалоба 5 часов назад, csm7 сказал: Доброго времени суток. Такой вопрос. Необходимо к текущему времени в RTC добавить интервал времени. Необходимо - добавляйте. Или разрешения спрашиваете? 5 часов назад, csm7 сказал: Я Вас правильно понимаю, что можно так просто добавить интервал времени и модуль RTC автоматом все учтет. (рассчитает правильное время и дату) Перевести время/дату в число секунд (от некоторой базовой даты), прибавить смещение, перевести обратно. Всё. PS: В некоторых МК RTC умеет работать сразу в удобном формате - в числе секунд, без всяких ущербных дней/месяцев/... и т.п. Хотя это пожалуй не про STM... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr Baranov 1 15 декабря, 2020 Опубликовано 15 декабря, 2020 · Жалоба 18 minutes ago, jcxz said: Перевести время/дату в число секунд (от некоторой базовой даты), прибавить смещение, перевести обратно. Всё. Все уже давно "украдено до нас". Надо только найти сниппеты, которые переводят дату в секунды от 1970 года, например, и секунды обратно в дату. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 15 декабря, 2020 Опубликовано 15 декабря, 2020 · Жалоба 1 час назад, Aleksandr Baranov сказал: Все уже давно "украдено до нас". Надо только найти сниппеты, которые переводят дату в секунды от 1970 года, например, и секунды обратно в дату. Зачем в 2020-м году использовать 1970-й как базу? А для перевода числа во время/дату и обратно, достаточно владеть 4-мя базовыми арифметическими операциями и знать сколько дней в каждом месяце. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 15 декабря, 2020 Опубликовано 15 декабря, 2020 · Жалоба 9 hours ago, csm7 said: Я Вас правильно понимаю, что можно так просто добавить интервал времени и модуль RTC автоматом все учтет. (рассчитает правильное время и дату) Смотрим волшебшую функцию http://www.cplusplus.com/reference/ctime/mktime/ С ней все можно. Но тип даты времени надо перевести в http://www.cplusplus.com/reference/ctime/time_t/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 26 15 декабря, 2020 Опубликовано 15 декабря, 2020 · Жалоба 2 hours ago, jcxz said: Зачем в 2020-м году использовать 1970-й как базу? С этим тезисом согласен. Тоже храню все даты в логах, как секунды с начала 2000 года. 2 hours ago, jcxz said: А для перевода числа во время/дату и обратно, достаточно владеть 4-мя базовыми арифметическими операциями и знать сколько дней в каждом месяце. А вот здесь есть проблема. В БСЭ было написано, что год делящайся на 4 - високосный, а делящийся на 100 - не високосный. Но где-то в конце 1999 кто-то принял закон, что если делится на 400 - то високосный. И было два типа календариков в продаже. Уже несколько лет, периодически, добавляют\убавляют секунду на рубеже смены года. Так что, не то, что сколько дней - сколько секунд в каком году решают новые законодательные акты, а не формулы... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr Baranov 1 15 декабря, 2020 Опубликовано 15 декабря, 2020 · Жалоба 3 hours ago, jcxz said: Зачем в 2020-м году использовать 1970-й как базу? Вот, какую базу готовые функции используют, такую пусть они и используют. Не имеет смысла изобретать изобретенное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 15 декабря, 2020 Опубликовано 15 декабря, 2020 · Жалоба 3 часа назад, jcxz сказал: Зачем в 2020-м году использовать 1970-й как базу? Ну как-бы формат UNIX Time))) 5 часов назад, jcxz сказал: В некоторых МК RTC умеет работать сразу в удобном формате - в числе секунд, без всяких ущербных дней/месяцев/... Вот ведь, а по мне как-раз с этим юникстайм и есть ущербный, когда МК имеет в себе аппаратный календарь - это куда лучше... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 15 декабря, 2020 Опубликовано 15 декабря, 2020 · Жалоба 53 минуты назад, _4afc_ сказал: Но где-то в конце 1999 кто-то принял закон, что если делится на 400 - то високосный. Сударь, где вы спали более 400 лет? Этот закон принял ещё папа Григорий 13-й в 1582 г. И с тех пор этот календарь называется григорианским. И что за календарики вы видели - непонятно. По юлианскому стилю что-ль? Так и его большевики давно уже отменили. 13 минут назад, mantech сказал: Ну как-бы формат UNIX Time))) А зачем? Какой смысл тащить это го$но мамонта в 21-й век и к тому же - в embedded, где нет зависимости от каких-то "библиотек" или системных API (типа WinAPI)? Цитата Вот ведь, а по мне как-раз с этим юникстайм и есть ущербный, когда МК имеет в себе аппаратный календарь - это куда лучше... Ну да - и когда нужно произвести даже простейшие арифметические операции со временем то начинаются пляски с бубном. Да даже чтобы просто сохранить - вместо удобного одного 32-битного значения, имеем массив байт. Да ещё размером некратным степени 2. А если потом ещё где-то атомарные операции понадобятся для этого значения - опять лишние проблемы. Плюсов нет никаких от слова, совсем. Вы видимо никогда не имели дел с синхронизацией часов на разных устройствах (да ещё работающих в разных часовых поясах), службами времени, журналами событий с метками времени, плавными переводами часов и т.п. Там это всё имеет значние. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 15 декабря, 2020 Опубликовано 15 декабря, 2020 (изменено) · Жалоба 10 минут назад, jcxz сказал: Плюсов нет никаких от слова, совсем. Работал с СТМовским, аллвиннеровским календарем и "счетчиком" в imx6 - первый вариант был лучше и удобнее, ИМХО. И да, прибавлять и вычитать секунды было не нужно)) Изменено 15 декабря, 2020 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 15 декабря, 2020 Опубликовано 15 декабря, 2020 · Жалоба 1 минуту назад, mantech сказал: первый вариант был лучше и удобнее, ИМХО. Чем "удобнее"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 53 15 декабря, 2020 Опубликовано 15 декабря, 2020 (изменено) · Жалоба 3 минуты назад, jcxz сказал: Чем "удобнее"? Не нужно всяких расчетов, аппаратный "будильник" и еще что-то, уже не помню... Изменено 15 декабря, 2020 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 15 декабря, 2020 Опубликовано 15 декабря, 2020 · Жалоба Только что, mantech сказал: Не нужно всяких расчетов, "Не нужно" для чего? Для описанных мной выше задач? И как их решать тогда на дате/времени вместосчётчика секунд?? Расскажите. Только что, mantech сказал: аппаратный календарь и еще что-то, уже не помню... не понимаю что вы имеете в виду под "аппаратный календарь" и в чём его преимущество, которого нет в счётчике секунд? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться