Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
#1

Узнать время работы компьютера - C++

19.09.2013, 19:40. Просмотров 1019. Ответов 4
Метки нет (Все метки)

Есть некая программа запускающаяся при старте системы. Выключается она только при отключении компьютера. Необходимо по команде к этой программе получить время текущей работы этой программы.
(возможно есть функции для получения время работы компьютера, если подскажите тоже вариант подойдет)

что я уже нашел?
нашел великолепную структуру tm*
http://cppstudy.wordpress.com/2009/03/14/current-date-time/
однако с ней не работает фишка: взять разность двух структур в разное время работы и получить время работы программы.

еще нашел такую тему
Использовать время (таймер) в С++ консоль
тут есть целый класс Таймер, но у меня с ООП туго, если честно, да и вопрос наверняка можно решить проще, чем такой класс включать в проект.
написать свой таймер не так уж и сложно, но мне хотелось бы воспользоваться функциями уже готовыми.

Добавлено через 26 минут
вот такое наваял на скорую руку. Но этот таймер не более чем на сутки и код ручками прописан. Может есть что по проще?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <windows.h>
#include <stdio.h>
#include <ctime>
 
struct MyTime
{
    int     sec;
    int     min;
    int     hour;
};
 
int main()
{
    MyTime          startTime,                      // хранит время старта системы
                    curTime,                        // текущее время в системе
                    workTime;                       // время работы программы
    time_t          seconds = time(NULL);
    tm*             timeinfo = localtime(&seconds);
 
 
    startTime.sec = timeinfo->tm_sec;
    startTime.min = timeinfo->tm_min;
    startTime.hour = timeinfo->tm_hour;
 
    printf("[ %02i:%02i:%02i ]\n",startTime.hour,startTime.min,startTime.sec);
    system("pause");
    
    
    seconds = time(NULL);
    timeinfo = localtime(&seconds);
 
    curTime.sec = timeinfo->tm_sec;
    curTime.min = timeinfo->tm_min;
    curTime.hour = timeinfo->tm_hour;
 
    printf("[ %02i:%02i:%02i ]\n", curTime.hour, curTime.min, curTime.sec);
 
    workTime.sec = curTime.sec - startTime.sec;
    if(workTime.sec<0)
    {
        curTime.min--;
        workTime.sec += 60;
    }
    workTime.min = curTime.min - startTime.min;
    if(workTime.min<0)
    {
        curTime.hour--;
        workTime.min += 60;
    }
    workTime.hour = curTime.hour - startTime.hour;
    
    printf("[ %02i:%02i:%02i ]\n", workTime.hour, workTime.min, workTime.sec);
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2013, 19:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Узнать время работы компьютера (C++):

как узнать время работы программы решения алгоритма - C++
Добрый вечер! Подскажите, пожалуйста, как сделать так, чтобы программа выводила на экран время, затраченное на решение алгоритма? Можно...

Выводить текущее время в определенные позиции консоли во время работы - C++
Портирую консольное приложение. Есть код, который работал после компиляции в BC++ 3.1, после компиляции под MinGW GCC программа не...

Написать программу вычисления величины дохода по вкладу. Процентная ставка (% годовых) и время хранения (дней) задаются во время работы программы - C++
1. Написать программу вычисления величины дохода по вкладу. Процентная ставка (% годовых) и время хранения (дней) задаются во время работы...

Как узнать аппаратную конфигурацию компьютера средствами с++? - C++
Доброе время суток. как узнать аппаратную конфигурацию компьютера средствами с++? может кто кинет пример или название книги где...

Какая функция читает внутреннее время компьютера в секундах? - C++
Какая функция читает внутреннее время компьютера в секундах? A) stime() B) time(SECONDS) C) time() D) time(NULL) ?

Как в программе можно изменить системное время компьютера? - C++
Как в программе можно изменить системное время компьютера?

4
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
19.09.2013, 21:52 #2
Цитата Сообщение от GBIT Посмотреть сообщение
что я уже нашел?
нашел великолепную структуру tm*
http://cppstudy.wordpress.com/2009/0...ent-date-time/
однако с ней не работает фишка: взять разность двух структур в разное время работы и получить время работы программы.
Можешь просто взять время замерять, затем снова замерять и посчитать разницу времен.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <ctime>
#include <Windows.h>
 
int main()
{
    time_t time_begin;//начальное время
    time_t time_prov;//время которое будем просто замерять при вызове функции
 
    time(&time_begin);
    //...
    //как бы работа программы
    //делаем задержку типо программа работает.
    Sleep(3333);
    //...
    time(&time_prov);//замеряем время
    //cout <<ctime(&time_begin)<<endl;
    //cout <<ctime(&time_prov)<<endl;
 
    double second=difftime(time_prov,time_begin);//разница времен будет время которое отработала программа
    cout <<"second= "<<second<<endl;
 
 
 
    return 0;
}
0
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
19.09.2013, 22:50 #3
Если не нужна особая точность то пусть программа считает минуты ( секунды ) и пишет в текстовый файл .
0
Ab
75 / 75 / 1
Регистрация: 03.05.2012
Сообщений: 161
20.09.2013, 04:00 #4
Цитата Сообщение от GBIT Посмотреть сообщение
(возможно есть функции для получения время работы компьютера, если подскажите тоже вариант подойдет)
Наипростейший вариант - GetTickCount(), хватает на 49 дней, в подавляющем большинстве случаев этого достаточно.
1
GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
20.09.2013, 18:53  [ТС] #5
Все эти решения возвращают результат в секундах. С этим у меня проблем нет, такие решения знаю, в ручную переводить потом в минуты часы и тд. можно, но я спрашивал уже готовые системные функции.
0
20.09.2013, 18:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2013, 18:53
Привет! Вот еще темы с ответами:

Как узнать время выполнения алгоритма - C++
Мне нужно сравнить несколько алгоритмов сортировки. Но таким способом как у меня, дает очень маленькие значения .... дл массива int -...

Как узнать дату и время изменения файла - C++
Нужно чтобы прога на с++ просматривала тхт файлы в отдельной папке и записывала в переменные или массив дату и время их изменения. (не...

Можно ли как-то узнать, что программа была перенесена с одного компьютера на другой - C++
нужно это для того, чтобы программа работала только на доверенных компьютерах. мне предлагали проверять имя компьютера, но его же можно...

Как узнать кодировку вывода в консоль во время выполнения программы? - C++
Привет всем! Я новичок, и возникла идея написать консольное приложение для Windows которое принимает на ввод русские символы и также...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru