Как конвертировать строку в дату и время в секунды(число)
- Войдите на сайт для отправки комментариев
Пт, 03/08/2018 - 20:23
Здравствуйте.
Подскажите пожалуйста есть дата и время: 2018.08.03 21:21:40. как перевести данное время в число секунд.
И необходима обратная операция из числа секунд в конкретное время, пример: 1555452584 => 03.08.2018, 21:21:40.
Использую библиотеку: #include <iarduino_RTC.h>
Устройство: iarduino_RTC time(RTC_DS1307);
Ардуино UNO 1.8.5
#include <time.h>
Нашел, у родного брата GrishkoDE. Может кому пригодится к библиотеке #include <iarduino_RTC.h> Ардуино UNO 1.8.5long myFuncM(long xxx){
А что, готовыми функциями системной библиотеки (из time.h) воспользоваться религия не позволила?
А что, готовыми функциями системной библиотеки (из time.h) воспользоваться религия не позволила?
Ни хре бы не пришлось. Просто вместо той портянки, что Вы волжили, Вы бы вставили вызов готовой системной функции, которая считает всё, что Вам нужно.
Ни хре бы не пришлось. Просто вместо той портянки, что Вы волжили, Вы бы вставили вызов готовой системной функции, которая считает всё, что Вам нужно.
Конечно, виднее. От Вашей любимой "iarduino_RTC.h" Вам никто отказываться не предлагал, просто вместо поортянки, для вычисления количества секунд, предлагали использовать системную функцию, которая а) раза в три быстрее; б) жрёт меньше памяти; и в) не содержит детских ошибок.
А так, конечно, если Вас устраивает цена на прошлогодний овёс, которую расчитывает та программа, так пользуйтесь на здоровье.
+++++++++++++++++++++++++++
Просьба к Александру!
Вычисти все с номера 2, плз.
В №1 Женя ответил на вопрос. Если оставить ту муть, что привел ТС, то мы получим "Если слепой ведет слепого, то оба упадут в яму!".
Нужно вообще ввести правило, после ответа специалистов, дальшейший флуд в темах убирать, ради тех чайников, которые потом это читать будут. Нужна ли дальшейшая дискуссия - пусть определяет ответивший специалист.... например, если не нужна - то пишем слово КОНЕЦ... или еще как-то. ...дискутируемо.
Нужно вообще ввести правило, после ответа специалистов, дальшейший флуд в темах убирать, ради тех чайников, которые потом это читать будут. Нужна ли дальшейшая дискуссия - пусть определяет ответивший специалист.... например, если не нужна - то пишем слово КОНЕЦ... или еще как-то. ...дискутируемо.
категорически против.
На самом деле треды с разным бредом ОЧЕНЬ ПОУЧИТЕЛЬНЫ - а также разные срачи на программисткую тему, если не слишком длинные. Программирование ценно тем, что практически любую вещь можно сделать десятком способов - и всегда полезно почитать спор на тему, какой способ лучше и почему все варианты бред и лишь один мой хороший :)
Нужна ли дальшейшая дискуссия - пусть определяет ответивший специалист....
У нас говорили на одной работе: "У двух штурманов - три мнения".
Как почему? Потому что "мой"!
Нашел, у родного брата GrishkoDE. Может кому пригодится к библиотеке #include <iarduino_RTC.h> Ардуино UNO 1.8.5
Вот всем торлько покритиковать! Простой и легкий код, тоже подобную задачу решаю.
Вопросы к Konstanti999:
1. не совсем понял, как время представленное строкой (2018.08.03 21:21:40) конвертуется в секунды? В коде работает только функция long myFunc, а myFuncM(long xxx) не выполняет то что от нее ожидалось.
2. учитывается ли високосный год в конвертации даты в секунды, и как потом из секунд опять получить дату вида 2018.08.03 21:21:40?
Буду очень признателен за разъяснение.
Andrey12,
Вы не поняли, всё гораздо смешнее.
Он преобразует дату не из строки, а из чисел г.м.д.ч.м.с. в unix-time. Високосность там конечно же не учитывается (ересь это).
А функция myFuncM - вообще шедевр, она реализует функцию abs следующим образом: преобразует число в String, там удаляет знак "-", а затем преобразует String обратно в число. Почти сорок лет программирую, но такого ещё не видел. Это же поэзия!
А функция myFuncM - вообще шедевр, она реализует функцию abs следующим образом: преобразует число в String, там удаляет знак "-", а затем преобразует String обратно в число. Почти сорок лет программирую, но такого ещё не видел. Это же поэзия!
Это индусы так делают на шарпе. например, как проверить, что целое число меньше 10. Да просто преобразовать в строку и смотреть длину. Если == 1, то число от 0 до 9.
Andrey12,
Вы не поняли, всё гораздо смешнее.
Он преобразует дату не из строки, а из чисел г.м.д.ч.м.с. в unix-time. Високосность там конечно же не учитывается (ересь это).
А функция myFuncM - вообще шедевр, она реализует функцию abs следующим образом: преобразует число в String, там удаляет знак "-", а затем преобразует String обратно в число. Почти сорок лет программирую, но такого ещё не видел. Это же поэзия!
Вот то то и оно, что убрав символы ": . -" из строки с датой временем, мы не получим количество секунд.
И опять же, unix-time используется больше для совместимости, если писать маленький проект почему бы не использовать количество секунд с 01.01.2018 00:00:00?
А високосный год точно ересь :-) особенно если учесть что правило високосный год = год деленый на 4 без остатка это не аксиома.
Ему нужна совместимость с каким-то внешним источником.
А високосный год точно ересь :-) особенно если учесть что правило високосный год = год деленый на 4 без остатка это не аксиома.
Конечно не аксиома,например 2100 год не будет високосным, и 1900 не был. Ересь - это весь григоринаский календарь со всеми его навроротами, не зря РПЦ на него не переходит :))) Вот смотрите:
1. тринадцатые числа месяца чаще приходятся на пятницу, чем на другие дни недели
2. при этом календарь ввёл Папа Григорий XIII
Думаете совпадение? Ересь в чистом виде! :)
Вот то то и оно, что убрав символы ": . -" из строки с датой временем, мы не получим количество секунд.
да, нет, он не это убирает. Он берёт обыкновенное число (long n), преобразует его в String, убирает '-', если есть, и преобразует обратно в long. Получается |n| Во как!
Это индусы так делают на шарпе. например, как проверить, что целое число меньше 10. Да просто преобразовать в строку и смотреть длину. Если == 1, то число от 0 до 9.
Гениально! Сразу видно, что индусы - древнейшая и мудрейшая культура!
Это индусы так делают на шарпе. например, как проверить, что целое число меньше 10. Да просто преобразовать в строку и смотреть длину. Если == 1, то число от 0 до 9.
Гениально! Сразу видно, что индусы - древнейшая и мудрейшая культура!
Я тоже был ачарован. Правда, потом пил 3 дня.
Это индусы так делают на шарпе. например, как проверить, что целое число меньше 10. Да просто преобразовать в строку и смотреть длину. Если == 1, то число от 0 до 9.
Гениально! Сразу видно, что индусы - древнейшая и мудрейшая культура!
да ладно смеятся, вы ничего не понимаете. Это вполне стандартный метод определения разрядности числа - переводим в строку и берем длину строки. Понятно, что когда речь идет о однозначных-двухзначных числах, этот код выглядит нелепо - но это просто вопрос привычки. Если же числа могут быть, скажем, от 0 до 1000000 - метод через строку явно эффективнее числовых сравнений по диапазонам.
Это индусы так делают на шарпе. например, как проверить, что целое число меньше 10. Да просто преобразовать в строку и смотреть длину. Если == 1, то число от 0 до 9.
Гениально! Сразу видно, что индусы - древнейшая и мудрейшая культура!
да ладно смеятся, вы ничего не понимаете. Это вполне стандартный метод определения разрядности числа - переводим в строку и берем длину строки. Понятно, что когда речь идет о однозначных-двухзначных числах, этот код выглядит нелепо - но это просто вопрос привычки. Если же числа могут быть, скажем, от 0 до 1000000 - метод через строку явно эффективнее числовых сравнений по диапазонам.
Это всегда выглядит нелепо.
Цикл делений на 10 - основа преобразования в строку, если не нравятся сравнения, то сделай цикл делений, все ж быстрее будет
Простите, это Вы пошутили? У меня что-то сегодня с юмором напряг и никак понять не могу :)
Так-то сравнение раз в 50 быстрее работает, чем через String или через char[]. Я даже не поленился попробовать.
Причём, заметьте, здесь небольшие чила - наихудший случай для сравнения, т.к. требуется максмиальное количество срванений.
ну хорошо, убедили :)
Зато функция digits1 аккуратнее всего выглядит в коде :)
аккуратнее всего выглядит в коде :)
Вы сейчас процитировали первый закон Скотта: "Неважно, что что-то идёт неправильно. Возможно, это хорошо выглядит" :))))
Кстати, есть ещё один поход, который выглядит ещё аккуратнее, а с точки зрения математики, та и логичнее:
Кстати, есть ещё один поход, который выглядит ещё аккуратнее, а с точки зрения математики, та и логичнее:
издеваетесь? сколько килобайт математических библиотек притащит с собой один вызов логарифма? :)
Просто затроллил по теме стринга.
Просто затроллил по теме стринга.
кто кого?
издеваетесь? сколько килобайт математических библиотек притащит с собой один вызов логарифма? :)
Но выглядит-то симпатично! Сами только что закон Скотта цитировали! :)