Высчитать дату, которая наступит через Х дней
- Войдите на сайт для отправки комментариев
Втр, 17/06/2014 - 12:34
Есть ли какой-нибудь красивый способ для просчета даты, которая наступит через Х дней?
К примеру, сегодня 17 июня, и мне необходимо, чтобы, допустим, через 45 дней выполнилось какое-то действие.
Arduino + ds1307
На сколько я понимаю, нужно просчитать, какое число какого месяца будет через 45 дней, и сравнивать текущее число/месяц с высчитанным. Вопрос в том, как его высчитать. Поделитесь куском кода, пожалуйста. Буду благодарна :-)
Я тут посмотрела, что изнальный формат времени ds1307 - unix time. У меня стандартная библиотека для ds1307. Есть ли в ней нужная мне функция?
функция называется unixtime() - показывает секунд с 1970 года обычно есть в стандарном классе DateTime
также в этом классе есть инициализатор
45дней = 45*24*60*60 секунд
Видимо, у меня не совсем стандартная библиотека. Можете дать ссылку на ту библиотеку, которую Вы использовали (вызов функции rtc.now();)
А библиотека DateTime умеет конвертировать из unix time?
Люди, помогите пожалуйста. С паяльником плохо дружу, а плата уже разведена, i2c дисплей висит на a5 и a6, ds1307 на a3 и a4.
Я устанавливаю текущие время и дату, устанавливаю продолжительность работы устройства (оно подключено через реле) в днях. Мне нужно, чтоб устройство выключилось через заданный промежуток времени. В моей библиотеке для часов нет функции unixtime(). В библиотеке RTClib я не нашла, где можно изменить пины, к которым подключены часы.
Есть ли алгоритм для вычисления unix времени? Или, может, эту задачу можно решить еще как-то?
Не хочу просто вводить дату отключения, хочу вводить кол-во дней.
В гугле уже все ссылки поменяли цвет )))
Как кастыль, можно попробобовать подключить библиотеку RTClib, но использовать только функции datetime, а общение с часами вести своей библиотекой.
Вообще i2c хардварный интерфейс. https://github.com/adafruit/RTClib
и сама DateTime
Вообще i2c хардварный интерфейс. https://github.com/adafruit/RTClib
и сама DateTime
там недалеко и до
Эпический барабан...
Да зачем вам вообще эти даты и конвертации?
В чем вы время от своей библиотеки стандартной получаете? (кстати, вы так и не признались никому что же это за "стандартаня библиотке". пусть сами догадываются что у нее есть, а чего нет).
Ну вот скажем вот эта: http://playground.arduino.cc/Code/Time
У нее есть "now(); // Returns the current time as seconds since Jan 1 1970"
Пофиг называется от unixtimestamp или нет. Пофиг с 1970 или с 2000-чного будет возвращать. Главное что "в секундах с какого-то момента" (на самом деле пофиг что в секундах. хоть в попугаях. главное что линейно и "цифра не может обнулиться/переполниться").
Предположим что сейчас она нам вернула цифру "5555". А мы хотим что-бы у нас точ-то сработало "через 3 дня". Ну... переводим дни в секунды. 3*24*60*60=259200
Добавляем их в текущему времени: 5555+259200=264755
Все. Нам фиолетово "какая это дата". Нужно "сработать", когда now() вернет цифру 264755. А произойдет это - через три дня. Вне зависимости от того сколько дней в месяце, високосный год или нет и т.п.
Перевод времени из Unix time в календарную дату очень простой, например вот
http://ru.m.wikipedia.org/wiki/%D0%AE%D0%BB%D0%B8%D0%B0%D0%BD%D1%81%D0%B...
Спасибо, ребят. Решила не заморачиваться с библиотеками, сделала таким вот образом, считая количество дней за прошедшие года, начиная с 0, прибавляя по 1 дню за каждый 4й високосный год, отнимая по 1 дню каждый сотый, и прибавляя по 1 дню за каждый 400й год, плюс количество дней, прошедших с начала года из массива, плюс по 1 дню, если месяц больше февраля и год - високосный:
И это называется "не заморачиваться"? А потом еще нужно будет запомнить часы минуты секунды когда происходила установка. И потом еще их их проверять. (что-бы "сработало", не в полноч, а именно "через чере дня").
Просто вместо того что-бы взять библиотеку которая умеет возвращать время в секундах с какого года, и написать конструкцию вида:
А "запускать отсчет", банальным
P.S. Кстати2: "кстати, вы так и не признались никому что же это за "стандартаня библиотке..."
А за упорство, и все-таки найденое решение (пусть и то которое не нравится некоторым ;)- конечно жирный плюс вам.