реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ИАР: проблема 2036 года, ...медленно близится час расплаты...
Dog Pawlowa
сообщение Sep 12 2009, 04:08
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Ну, я то не доживу, или буду счастливым маразматиком, а для молодых:

при вызове mktime, если в struct tm.tm_year>135, то все поля структуры искажаются.
ИАР MSP430 4.21

zltigo, я Ваши функции так и не подключил, а было бы интересно знать, как они работают. Не проверяли?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 12 2009, 06:05
Сообщение #2


фанат дивана
******

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



Дык, это же unix time smile.gif
Проблема 2038
Цитата
19 января 2038 года в 03:14:08 по всемирному времени значение переменной типа time_t, отсчитывающей число секунд, прошедших с 1 января 1970 года, достигнет 2^31, что может привести к ошибочной интерпретации этого числа как отрицательного.


Так что ни IAR ни zltigo тут не при чёмsmile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 12 2009, 06:47
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(AHTOXA @ Sep 12 2009, 09:05) *
Дык, это же ..Проблема 2038

Аааа...
Только у меня почему-то раньше, даже в конце 35 наблюдается. unsure.gif

Ладно, раз уж все собрались ...
Подскажите, как вычислить время в следующий понедельник 00:00.
Еще нужно время первого числа следующего месяца, но это проще, и сам могу.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Sep 12 2009, 07:18
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(Dog Pawlowa @ Sep 12 2009, 10:47) *
Аааа...
Только у меня почему-то раньше, даже в конце 35 наблюдается. unsure.gif

Ладно, раз уж все собрались ...
Подскажите, как вычислить время в следующий понедельник 00:00.
Еще нужно время первого числа следующего месяца, но это проще, и сам могу.

Может проще новую эру открыть.... и полная перезагрузка biggrin.gif
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 12 2009, 07:22
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(VladimirYU @ Sep 12 2009, 10:18) *
Может проще новую эру открыть....

Увы, у заказчика нет фантазии, он хочет статистику не по эрам, а по неделям и месяцам.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 12 2009, 07:38
Сообщение #6


фанат дивана
******

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



Цитата(Dog Pawlowa @ Sep 12 2009, 12:47) *
Аааа...
Только у меня почему-то раньше, даже в конце 35 наблюдается. unsure.gif


Ну это уже IAR наверное ещё чутка отхватилsmile.gif

Цитата
Подскажите, как вычислить время в следующий понедельник 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 и эксельные таблицыsmile.gif))


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 12 2009, 07:46
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(AHTOXA @ Sep 12 2009, 10:38) *
Навскидку, как-то так:

Спасибо.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 12 2009, 08:26
Сообщение #8


фанат дивана
******

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



Цитата(Dog Pawlowa @ Sep 12 2009, 13:46) *
Спасибо.


Да не за чтоsmile.gif Вот так наверное будет оптимальнее, цикл там совершенно лишний:
Код
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;
}


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 12 2009, 08:45
Сообщение #9


Гуру
******

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



Цитата(Dog Pawlowa @ Sep 12 2009, 06:08) *
zltigo, я Ваши функции так и не подключил, а было бы интересно знать, как они работают. Не проверяли?

Все уже объяснили, но если замените time_t на unsigned long, то будут работать лучше smile.gif и точно позволит избежать прижизненных разборок.... Я последнее время для внутреннего потребления так стал делать, ибо область применения консервативная (все еще модернизируется оборудование середины 80x ) - вдруг какое железо и доживет.
Цитата(Dog Pawlowa @ Sep 12 2009, 09:22) *
Увы, у заказчика нет фантазии, он хочет статистику не по эрам, а по неделям и месяцам.

Везет Вам с заказчиком, лунных календарей, или лунно-солнечных от сотворения мира или дня рождения Императора не хотят smile.gif
И не надо думать, что такое 23 Элул 5769 smile.gif. Вот уж где дурдом.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 12 2009, 08:54
Сообщение #10


фанат дивана
******

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



Цитата(zltigo @ Sep 12 2009, 14:45) *
Все уже объяснили, но если замените time_t на unsigned long, то будут работать лучше smile.gif и точно позволит избежать прижизненных разборок....


Что за пессимизм? smile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 12 2009, 09:21
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(AHTOXA @ Sep 12 2009, 11:54) *
Что за пессимизм? smile.gif

Угу. У меня паспорт, действительный по 2058, почему-то приводящий в удивление немецких пограничников.
Они не смотрели кино про Маклауда smile.gif

Цитата
если замените time_t на unsigned long, то будут работать лучше

Спасибо. Проблема вылезла в менюшке установки времени, раз я там уже учел, то буду ждать апокалипсис, как все smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.0145 секунд с 7
ELECTRONIX ©2004-2016