0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2

Ошибка в time.h?

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

Студворк — интернет-сервис помощи студентам
Есть простой код. Сначала заполняется структура (struct tm), в нее заносятся начальные значения. Затем она преобразуется в тип time_t. Но преобразуется не правильно. Значение почти в два раза больше (в целочисленном значении). Код проверялся под IAR для stm8. Этот же код на арме исполняется нормально. В чем проблема?
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.07.2016, 21:40
Ответы с готовыми решениями:

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

Что за ошибка: "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...

Что за ошибка: "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...

47
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
21.07.2016, 11:08
Студворк — интернет-сервис помощи студентам
И какое отношение localtime имеет к встроенному таймеру?
0
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
21.07.2016, 16:16
Цитата Сообщение от div
Потому что как использовать эту структуру - написано в документации. Все остальное никто не гарантирует. Что ты пытаешься сэкономить?
Как написано? По примерам вызовом gmtime)))
0
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 44
22.07.2016, 13:51
Цитата Сообщение от 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
Цитата Сообщение от 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
Всем чмоки в этом чатике)))
Изначально я создавал свою структуру, но указатель начинал прыгать по адресам. Это не по "офф. докам", а по отладчику.

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

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

и что самое удивительное, что такое указатели не понимает PRS, а виноват конечно же timi.h, очевидно в нём ошибка.
обычно сразу компилятор обвиняют, ему такой замечательный код скормили, а криворукие индусы понаписали там чёрти что, вот он и конпилит неправильно!!!11
0
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 44
23.07.2016, 14:35
Цитата Сообщение от 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
Цитата Сообщение от _pv
изначально
struct tm *ts;
никакой структуры не создавалось.
Я пропустил некоторые этапы борьбы))) Этап создания структуры там тоже был. Там была проблема, что я создаю свою структуру, указатель на нее, а мне возвращают сторонний непонятный указатель. То ли возврат идет со стека, то ли еще откуда было не очень ясно.

Цитата Сообщение от syorzhuk
Для localtime, если по науке, tzset нужно настраивать и дёргать http://pubs.opengroup.org/onlinepubs/00 ... tzset.html - иначе откуда рантайму знать в каком часовом поясе драма разворачивается и какое "Кабульское время" пользователь лицезреть соблаговолят. Вручную складывать, оно конечно нагляднее - но при масштабировании операций со временем этот homd-made быстренько самоорганизуется в эдакий бордельеро©™, что особенно оценят неблагодарные потомки, во время весёлых прогулок в лесок за новой партией осиновых кольев.
Я говорил про начальную настройку времени. Потом можно и по сигналу ppm инкремент делать. Думаю инкремент целочисленной переменной будет быстрей функции, делающей тоже самое)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.07.2016, 14:55
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Опции темы

Новые блоги и статьи
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru