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

Ошибка в time.h?

17.07.2016, 21:40. Показов 9305. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru