|
родить аналог difftime() и time() |
|
|
|
Sep 16 2010, 23:03
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Граждане, не подскажете, где бы взять исходники аналога функции difftime() в обычных сях ?
Есть RTC, есть регистры, из которых можно родить структуру со временем. Но как ее перевести в секунды с начала хоть 1970, хоть 1980 или любого другого года - непонятно (или, что тоже самое - родить аналог time() ). Задача состоит в определении интервала времени между событиями порядка часов-суток-месяцев. При этом не хотелось бы промахиваться мимо тазика в районе 28-29 февраля...
UPDATE: с удивлением обнаружил \Keil\ARM\RV31\INC\time.h Почему я это не нашел ночью - не знаю. В хелпе обещают, что
* mktime() and localtime() can be used immediately * time() and clock() are system-specific and probably not usable unless reimplemented * asctime(), ctime(), and strftime() require locale.
Сообщение отредактировал evgen2 - Sep 17 2010, 09:30
|
|
|
|
|
 |
Ответов
|
Sep 17 2010, 09:13
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(Dron_Gus @ Sep 17 2010, 12:59)  time() возвращает количество секунд от... бла-бла-бла... его можно получить пересчетом регистров RTC функцией mktime. difftime() это что-то вроде: double difftime ( time_t time2, time_t time1 ) { return (time2 - time1); } Да, похоже что надо было искать mktime но находится оно какое-то некузявое для embedded http://www.google.com/codesearch/p?hl=ru#e...mktime%20lang:cСколько оно будет выполнятся - хз
|
|
|
|
|
Sep 17 2010, 09:37
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(evgen2 @ Sep 17 2010, 13:13)  Мда - зубодробильня какая-то... On a POSIX system, time_t is an arithmetic type, and one could just define #define difftime(t1,t0) (double)(t1 - t0) Реализацию остального можно посмотреть тут http://prex.sourceforge.net/src/files/1129.html
|
|
|
|
|
Sep 17 2010, 09:55
|
Местный
  
Группа: Участник
Сообщений: 236
Регистрация: 1-04-06
Пользователь №: 15 688

|
Цитата(sasamy @ Sep 17 2010, 13:37)  Мда - зубодробильня какая-то... On a POSIX system, time_t is an arithmetic type, and one could just define #define difftime(t1,t0) (double)(t1 - t0) Реализацию остального можно посмотреть тут http://prex.sourceforge.net/src/files/1129.htmlО, это явно проще, хотя засада очевидно перенесена в isleap(year) И, как видно из mktime() - этот самый isleap будет нынче вызываться 40 раз, что явно не радует. Впрочем тут явно есть место для оптимизации. Код for (year = 1970; year < (unsigned int)(1900 + tmp->tm_year); year++) days += DAYSPERNYEAR + (isleap(year) ? 1 : 0);
|
|
|
|
Сообщений в этой теме
evgen2 родить аналог difftime() и time() Sep 16 2010, 23:03 Dron_Gus localtime() mktime() Вам в помощь. (time.h) Sep 17 2010, 06:48 evgen2 Цитата(Dron_Gus @ Sep 17 2010, 10:48) loc... Sep 17 2010, 07:47  _Pasha Цитата(evgen2 @ Sep 17 2010, 11:47) и ник... Sep 17 2010, 08:20   evgen2 Цитата(_Pasha @ Sep 17 2010, 12:20) если ... Sep 17 2010, 08:41 Dron_Gus Не знаю, что за компилятором Вы пользуетесь (Вы ег... Sep 17 2010, 08:19 evgen2 Цитата(Dron_Gus @ Sep 17 2010, 12:19) Не ... Sep 17 2010, 08:25 Dron_Gus Похоже в MDK их действительно нет. Тогда http://ww... Sep 17 2010, 08:27 VAI Посмотрите во вложении.
Функции преобразования дат... Sep 17 2010, 09:50 Dron_Gus А зачем каждый раз пересчитывать? У Вас в процессо... Sep 17 2010, 10:19 sasamy Цитата(Dron_Gus @ Sep 17 2010, 14:19) А з... Sep 17 2010, 11:08 evgen2 Цитата(Dron_Gus @ Sep 17 2010, 14:19) А з... Sep 17 2010, 11:33  Dron_Gus Цитата(evgen2 @ Sep 17 2010, 15:33) mktim... Sep 17 2010, 11:39   evgen2 Цитата(Dron_Gus @ Sep 17 2010, 15:39) tim... Sep 17 2010, 19:21
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|