program zliczający czas

0

Witam,

Chciałbym napisać program mogący zliczać czas np dwóch zdarzeń. To znaczy każde ze zdarzeń miałoby swój przycisk "start" i "stop" w momencie naciśnięcia "start" dla zdarzenia 1 odliczany byłby czas dla tego zdarzenia, w momencie naciśnięcia "stop" odliczany czas byłby zatrzymywany. Docelowo chciałbym by program zapamiętywał odliczany czas dla poszczególnych dni oraz sumę czasu dla zdarzeń. Programuję w C trochę znam C++, zastanawiam się jakiego narzędzia użyć, może C# i bazy danych do zapamiętywania zliczeń, może macie jakieś sugestie?

1

Nie wystarczy zwykłe:

DateTime start = DateTime.UtcNow;
//a pozniej
DateTime end = DateTime.UtcNow;
Console.WriteLine((end-start).Seconds); 

?

0

Musi być to zdarzenie?

Może po prostu obiekt odpowiedzialny za zliczanie czasu zawierający metody StartTime(), GetCurrentTime(), właściwość: StopTime oraz obiekt odpowiedzialny za zapis do bazy danych, ewentualnie jeszcze obiekt odpowiedzialny za odczyt z bazy.

Metoda startTime() mogła by zawierać "Timer" z ustawionym Interwalem na 1000ms i iterującym zmienną typu integer.
Właściwość StopTime zwracała by true lub false i była by typu boolean.

W tym przypadku jeśli wciskamy przycisk 'Start' właściwość "StopTime" dostaje false. Natomiast jeśli klikniemy 'Stop' właściwość "StopTime" dostaje true. Metoda GetCurrentTime() zwraca ilość sekund.

Co do bazy danych proponuję ci MySQL lub SQLite.

2

Ja bym proponowal nie kombinowac tylko zrobic to za pomoca przeznaczonej do tego klasy: System.Diagnostic.StopWatch. Przyklad:

Stopwatch stopWatch = new Stopwatch();
        stopWatch.Start();
        //jakies tam operacje
        stopWatch.Stop();
        
        TimeSpan ts = stopWatch.Elapsed;

// Format
        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            ts.Hours, ts.Minutes, ts.Seconds,
            ts.Milliseconds / 10);
0

Nie wystarczy zwykły stoper? Ludzie, technologia wam do głowy strzeliła.
Błąd pomiarowy można wrzucić w dokumentację i po sprawie.

0
spartanPAGE napisał(a):

Nie wystarczy zwykły stoper? Ludzie, technologia wam do głowy strzeliła.
Błąd pomiarowy można wrzucić w dokumentację i po sprawie.

Przecież StopWatch to jest stoper...
Zresztą tak jak już wspomniałem wcześniej jak nie zależy mu na dużej dokładności (nie wiem co dokładnie chce mierzyć) to w zupełności wystarczy rozwiązanie które podałem w pierwszej odpowiedzi.

0

Dziękuję za odpowiedzi

spartanPAGE stoperem mogę mierzyć sobie co najwyżej czas jednego wydarzenia i nie mam tu historii, codziennie korzystasz z czegoś co ktoś inny wymyślił fajnie chyba też używać czegoś co sam zrobiłeś ;)
poza tym program chciałbym napisać dla siebie i z niego korzystać może też go udostępnię jak uznam że jest warto ;)

FakeAccount dokładność w sekundach w zupełności mnie zadowala, poszukam jak wykorzystać DataTime w C#.
Chciałbym też czytać aktualną datę i godzinę z czego mogę skorzystać ? Jeśli chodzi o wynik pomiaru to wstępnie chciałbym go zapisywać do bazy danych MySQL, czy ktoś może mnie naprowadzić jak to zrobić ?
Będę wdzięczny na tą tajemną wiedzę zwłaszcza jeśli ktoś przestawi ją jak 5 letniemu dziecku ;)

Programem zajmę się w weekend i w zasadzie od zerwa bo na dzień dzisiejszy jak wspomniałem MySQL i C# są mi obce.

0

Chciałbym też czytać aktualną datę i godzinę z czego mogę skorzystać ?

Wszystko co potrzebujesz posiada DateTime :)

Jeśli chodzi o wynik pomiaru to wstępnie chciałbym go zapisywać do bazy danych MySQL, czy ktoś może mnie naprowadzić jak to zrobić ?

Jeśli chodzi o MySQL to jest ogrom, mnóstwo tutoriali na internecie w jaki sposób to zrobić. Poczytaj i rób według wskazówek, a na pewno się uda :) W razie problemów pytaj to pomożemy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1