|
|
  |
ИАР: проблема 2036 года, ...медленно близится час расплаты... |
|
|
|
Sep 12 2009, 04:08
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Ну, я то не доживу, или буду счастливым маразматиком, а для молодых:
при вызове mktime, если в struct tm.tm_year>135, то все поля структуры искажаются. ИАР MSP430 4.21
zltigo, я Ваши функции так и не подключил, а было бы интересно знать, как они работают. Не проверяли?
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Sep 12 2009, 06:47
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(AHTOXA @ Sep 12 2009, 09:05)  Дык, это же ..Проблема 2038 Аааа... Только у меня почему-то раньше, даже в конце 35 наблюдается.  Ладно, раз уж все собрались ... Подскажите, как вычислить время в следующий понедельник 00:00. Еще нужно время первого числа следующего месяца, но это проще, и сам могу.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Sep 12 2009, 07:18
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(Dog Pawlowa @ Sep 12 2009, 10:47)  Аааа... Только у меня почему-то раньше, даже в конце 35 наблюдается.  Ладно, раз уж все собрались ... Подскажите, как вычислить время в следующий понедельник 00:00. Еще нужно время первого числа следующего месяца, но это проще, и сам могу. Может проще новую эру открыть.... и полная перезагрузка
|
|
|
|
|
Sep 12 2009, 07:38
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Dog Pawlowa @ Sep 12 2009, 12:47)  Аааа... Только у меня почему-то раньше, даже в конце 35 наблюдается.  Ну это уже IAR наверное ещё чутка отхватил  Цитата Подскажите, как вычислить время в следующий понедельник 00:00. Еще нужно время первого числа следующего месяца, но это проще, и сам могу. Навскидку, как-то так: Код time_t find_next_monday() { time_t t = time(0); struct tm * l; do { t += 60*60*24L; l = localtime(&t); } while (l->tm_wday != 1);
l->tm_sec = 0; l->tm_min = 0; l->tm_hour = 0; t = mktime(l); return t; } ЗЫ. Интересное время настанет в 38 году. Останутся только программы на Delphi и эксельные таблицы  ))
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 12 2009, 08:26
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Dog Pawlowa @ Sep 12 2009, 13:46)  Спасибо. Да не за что  Вот так наверное будет оптимальнее, цикл там совершенно лишний: Код time_t find_next_monday() { time_t t = time(0); struct tm * l; l = localtime(&t); t += 60*60*24L * ((8 - l->tm_wday) % 7); l = localtime(&t);
l->tm_sec = 0; l->tm_min = 0; l->tm_hour = 0; t = mktime(l); return t; }
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 12 2009, 08:45
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Dog Pawlowa @ Sep 12 2009, 06:08)  zltigo, я Ваши функции так и не подключил, а было бы интересно знать, как они работают. Не проверяли? Все уже объяснили, но если замените time_t на unsigned long, то будут работать лучше  и точно позволит избежать прижизненных разборок.... Я последнее время для внутреннего потребления так стал делать, ибо область применения консервативная (все еще модернизируется оборудование середины 80x ) - вдруг какое железо и доживет. Цитата(Dog Pawlowa @ Sep 12 2009, 09:22)  Увы, у заказчика нет фантазии, он хочет статистику не по эрам, а по неделям и месяцам. Везет Вам с заказчиком, лунных календарей, или лунно-солнечных от сотворения мира или дня рождения Императора не хотят  И не надо думать, что такое 23 Элул 5769  . Вот уж где дурдом.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 12 2009, 09:21
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(AHTOXA @ Sep 12 2009, 11:54)  Что за пессимизм?  Угу. У меня паспорт, действительный по 2058, почему-то приводящий в удивление немецких пограничников. Они не смотрели кино про Маклауда  Цитата если замените time_t на unsigned long, то будут работать лучше Спасибо. Проблема вылезла в менюшке установки времени, раз я там уже учел, то буду ждать апокалипсис, как все
--------------------
Уходя, оставьте свет...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|