Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/45: Рейтинг темы: голосов - 45, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
1

Ошибка в time.h?

17.07.2016, 21:40. Показов 8755. Ответов 47
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть простой код. Сначала заполняется структура (struct tm), в нее заносятся начальные значения. Затем она преобразуется в тип time_t. Но преобразуется не правильно. Значение почти в два раза больше (в целочисленном значении). Код проверялся под IAR для stm8. Этот же код на арме исполняется нормально. В чем проблема?
Код
#include "timi.h"
time_t now;
struct tm *ts;
void main( void )
{
ts->tm_sec=0;
ts->tm_min=0;
ts->tm_hour=0;

ts->tm_mday=1;
ts->tm_mon=6;
ts->tm_year=2016-1900;

ts->tm_wday=5;
ts->tm_yday=182;
ts->tm_isdst=-1;

now=mktime(ts);
//now=1467331200; Должно получиться
ts=gmtime(&now);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2016, 21:40
Ответы с готовыми решениями:

Ошибка выходящего параметра (time without time zone)
Всем добрый день. (server_version 8.3.3) Простая функция, в которой хочу получить время CREATE...

Что за ошибка: "E2015 Ambiguity between 'time' and 'std::time"?
Коды ошибок: v8.cpp(132): E2015 Ambiguity between 'time' and 'std::time(long *)' v8.cpp(133):...

Что за ошибка: "E2015 Ambiguity between 'time' and 'std::time"?
Коды ошибок: v8.cpp(132): E2015 Ambiguity between 'time' and 'std::time(long *)' v8.cpp(133):...

Не могу разобраться с заданием "Создайте класс Time с конструкторами Time(), Time( int hour)......"
/* Создайте класс Time с конструкторами Time(), Time( int hour), Time(int hour, int min),...

Ошибка run time error 6 overflow, что не так? (без cost.Text = c6 вроде сначала робил, а потом удалял и всё равно ошибка
Dim h, w, l, wr, lr, p, a As String Private Sub CommandButton1_Click() h = InputBox("Введите...

47
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
21.07.2016, 11:08 41
Author24 — интернет-сервис помощи студентам
И какое отношение localtime имеет к встроенному таймеру?
0
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
21.07.2016, 16:16 42
Цитата Сообщение от div
Потому что как использовать эту структуру - написано в документации. Все остальное никто не гарантирует. Что ты пытаешься сэкономить?
Как написано? По примерам вызовом gmtime)))
0
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 44
22.07.2016, 13:51 43
Цитата Сообщение от PRS
Цитата Сообщение от div
Потому что как использовать эту структуру - написано в документации. Все остальное никто не гарантирует.
Как написано? По примерам вызовом gmtime)))
Именно структуру? http://pubs.opengroup.org/onlinepubs/00 ... imi.h.html ;)
Просто в добрые старые времена понимание того, что засунутая в микроволновку для просушки кошка вывалится оттуда с некторой потерей качества её дальнейшей жизни, полагалось само собой разумеюшимся и расписывать, что раз уж некая функция возвращает указатель, который мы ей не передавали - то, подобно горячей картошке, указатель этот нужно, использовав по назначению, немедленно оставить в покое, не считалось нужным. Чем не владеем -> то не контролируем -> ждём от него пакостей -> банальный здравый смысл заставляет делать собственную копию.
Гугл свидетель - реализациям gmtime несть числа, но пяток первых попавшихся - это либо глобальный статический буфер, либо статический локальный что суть одно и тоже с т.з. того, кто пользует функцию. Тем не менее классика жанра заставляет останавливаться перед зелёным сигналом светофора в опасении "а вдруг там другой мастер-джигит сейчас на красный едет?!" - т.е., оптимизируя свою программу по самые помидоры, полагаться, что в реализации библиотеки не принял участие подобный нам оптимизатор 10040-го левела, заюзавший один буффер на всё про всё и что невинный вызов другой функции из семейки не похерит данные в "оптимизированном" буффере, а их, на минуточку, мы ещё надеялись использовать, - се несколько самонадеянно. Но, конечно, Практика критерий Истины - если не взорвалось в руках разработчика - возможно и пользователь будет цел. А уж если исходные тексты библиотеки у нас - так и вообще (Знание - Сила!) можно самолично убедиться в безопасности такого использования внутренних буфферов библиотеки - кто посмеет бросить тогда камень в нашу сторону? Ну разве что какой озабоченный портабельностью поднимет свою лапку с намозоленными подушечками пальцев в бессильном протесте. Конечно, лет эдак через пять будет шанс вспомнить его противную очкастую харю, когда скопированный нами не приходя в сознание код таки бабахнет с новой библиотекой - но до того ещё дожить надо, правда? Да и без бабахов этих порой жить скучно - мозг, привыкший к головоломкам, чахнет. :)
0
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
22.07.2016, 15:02 44
Цитата Сообщение от syorzhuk
Цитата Сообщение от PRS
Цитата Сообщение от div
Потому что как использовать эту структуру - написано в документации. Все остальное никто не гарантирует.
Как написано? По примерам вызовом gmtime)))
Именно структуру? http://pubs.opengroup.org/onlinepubs/00 ... imi.h.html ;)
Просто в добрые старые времена понимание того, что засунутая в микроволновку для просушки кошка вывалится оттуда с некторой потерей качества её дальнейшей жизни, полагалось само собой разумеюшимся и расписывать, что раз уж некая функция возвращает указатель, который мы ей не передавали - то, подобно горячей картошке, указатель этот нужно, использовав по назначению, немедленно оставить в покое, не считалось нужным. Чем не владеем -> то не контролируем -> ждём от него пакостей -> банальный здравый смысл заставляет делать собственную копию.
Гугл свидетель - реализациям gmtime несть числа, но пяток первых попавшихся - это либо глобальный статический буфер, либо статический локальный что суть одно и тоже с т.з. того, кто пользует функцию. Тем не менее классика жанра заставляет останавливаться перед зелёным сигналом светофора в опасении "а вдруг там другой мастер-джигит сейчас на красный едет?!" - т.е., оптимизируя свою программу по самые помидоры, полагаться, что в реализации библиотеки не принял участие подобный нам оптимизатор 10040-го левела, заюзавший один буффер на всё про всё и что невинный вызов другой функции из семейки не похерит данные в "оптимизированном" буффере, а их, на минуточку, мы ещё надеялись использовать, - се несколько самонадеянно. Но, конечно, Практика критерий Истины - если не взорвалось в руках разработчика - возможно и пользователь будет цел. А уж если исходные тексты библиотеки у нас - так и вообще (Знание - Сила!) можно самолично убедиться в безопасности такого использования внутренних буфферов библиотеки - кто посмеет бросить тогда камень в нашу сторону? Ну разве что какой озабоченный портабельностью поднимет свою лапку с намозоленными подушечками пальцев в бессильном протесте. Конечно, лет эдак через пять будет шанс вспомнить его противную очкастую харю, когда скопированный нами не приходя в сознание код таки бабахнет с новой библиотекой - но до того ещё дожить надо, правда? Да и без бабахов этих порой жить скучно - мозг, привыкший к головоломкам, чахнет. :)
История сего всего топика показывает что ТС такие длинные тексты не читает и ссылки, любезно предоставленным мимо проходящими добра желателями, не посещает. По крайней мере у меня сложилось такое впечатление.
0
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
22.07.2016, 23:34 45
Всем чмоки в этом чатике)))
Изначально я создавал свою структуру, но указатель начинал прыгать по адресам. Это не по "офф. докам", а по отладчику.

Дальше, читающие доки предложите вариант оптимальней для задачи - "Самый простой пример - часовое время с ГПС. С приемника приходит время по гринвичу в формате hhmmss и дата ddmmyy. Мне надо перейти к местному времени, с возможным изменением даты. Соответственно я заполняю структуру, перевожу в time_t, целочисленно прибавляю пояс и перевожу обратно. На выходе у меня местное время с минимальными телодвижениями. И для начала этих действий мне нужно получить указатель на эту структуру, вызвав gmtime впустую. Потом уже можно использовать полученный адрес, но первый вызов будет именно с пустыми/не валидными данными."
Для особо упертых уточню - начальных данных нет никаких, кроме часового пояса в еепром.
А потом еще раз расскажите что мне этот указатель не нужен))) Ну и про использование localltime не забудьте.
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
23.07.2016, 12:59 46
Цитата Сообщение от PRS
Изначально я создавал свою структуру, но указатель начинал прыгать по адресам. Это не по "офф. докам", а по отладчику.
изначально
struct tm *ts;
никакой структуры не создавалось.

а использовать внутренние статические переменные по возвращаемому указателю для каких-то своих целей это из той же серии что и писать куда попало по непроинициализированным указателям - ССЗБ.

и что самое удивительное, что такое указатели не понимает PRS, а виноват конечно же timi.h, очевидно в нём ошибка.
обычно сразу компилятор обвиняют, ему такой замечательный код скормили, а криворукие индусы понаписали там чёрти что, вот он и конпилит неправильно!!!11
0
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 44
23.07.2016, 14:35 47
Цитата Сообщение от PRS
.... С приемника приходит время по гринвичу в формате hhmmss и дата ddmmyy. Мне надо перейти к местному времени, с возможным изменением даты. Соответственно я заполняю структуру, перевожу в time_t, целочисленно прибавляю пояс и перевожу обратно. На выходе у меня местное время с минимальными телодвижениями. .... Ну и про использование localltime не забудьте.
Для localtime, если по науке, tzset нужно настраивать и дёргать http://pubs.opengroup.org/onlinepubs/00 ... tzset.html - иначе откуда рантайму знать в каком часовом поясе драма разворачивается и какое "Кабульское время" пользователь лицезреть соблаговолят. Вручную складывать, оно конечно нагляднее - но при масштабировании операций со временем этот homd-made быстренько самоорганизуется в эдакий бордельеро©™, что особенно оценят неблагодарные потомки, во время весёлых прогулок в лесок за новой партией осиновых кольев.
0
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
23.07.2016, 14:55 48
Цитата Сообщение от _pv
изначально
struct tm *ts;
никакой структуры не создавалось.
Я пропустил некоторые этапы борьбы))) Этап создания структуры там тоже был. Там была проблема, что я создаю свою структуру, указатель на нее, а мне возвращают сторонний непонятный указатель. То ли возврат идет со стека, то ли еще откуда было не очень ясно.

Цитата Сообщение от syorzhuk
Для localtime, если по науке, tzset нужно настраивать и дёргать http://pubs.opengroup.org/onlinepubs/00 ... tzset.html - иначе откуда рантайму знать в каком часовом поясе драма разворачивается и какое "Кабульское время" пользователь лицезреть соблаговолят. Вручную складывать, оно конечно нагляднее - но при масштабировании операций со временем этот homd-made быстренько самоорганизуется в эдакий бордельеро©™, что особенно оценят неблагодарные потомки, во время весёлых прогулок в лесок за новой партией осиновых кольев.
Я говорил про начальную настройку времени. Потом можно и по сигналу ppm инкремент делать. Думаю инкремент целочисленной переменной будет быстрей функции, делающей тоже самое)))
0
23.07.2016, 14:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2016, 14:55
Помогаю со студенческими работами здесь

Ошибка Run-Time
При работе с DirectInput появляется такая ошибка: Run-Time Check Failure #3 - The variable 'dims'...

Ошибка с библиотекой time.h
Добрый день форумчане, столкнулся с проблемой связанной с библиотекой time.h. Хочу написать...

Ошибка Run-time error ''76''
доброе время суток :) Я скачал TopServer 3.0.3_32 ... и ни толька... в эту программу входят : ...

В чем ошибка? (time.strptime)
Всем доброго дня! Пытаюсь распарсить строку с датой, используя strptime: date = =...

Ошибка компиляции и функция time
вобщем вот на это ругается библиотеки #include <stdio.h> #include <time.h> #include...

Ошибка Run-time error ' 13'
Добрый день! Помогите, пожалуйста, исправить! Есть макрос и выдается ошибка.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru