Schrift
[thread]1106[/thread]

Sekunden in Stunden,Minuten,Sekunden umwandeln

Leser: 1


<< >> 4 Einträge, 1 Seite
SirLant
 2004-04-14 03:11
#10932 #10932
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Ich verzweifel hier noch seit einer halbe Stunde versuche ich die
vergangene Zeit in Sekunden umzuwandeln, folgender Perl-Code
funktioniert einwandfrei:
Code (perl): (dl )
1
2
3
4
5
6
7
$secs  = $dauer % 60;           
$dauer   -= $secs;                      
$dauer   /= 60;                         
$mins  = $dauer % 60;           
$dauer   -= $mins;                      
$dauer   /= 60;                         
$hours = $dauer;


Das gleiche in C++ jedoch nicht, ich verstehe zwar nicht weshalb,
aber die Minuten springen nicht auf 1, bei 60Sekunden sondern
die Stunde erhöht sich auf 1, habe schon einiges versucht,
aber habe es nie richtig hinbekommen.
Könnte mir wer den Code für C++ umschreiben, so dass er funktioniert?

Und am besten noch erklären weshalb es so nicht geht, verstehe
es nämlich nicht weshalb es in Perl geht und C++ nicht :(

Edit:

habe es gerade gesehen, ich habe die Zeit nicht durch 60geteilt,
bevor ich die Minuten abziehe, sollte wohl besser schlafen gehen :D\n\n

<!--EDIT|SirLant|1081897991-->
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
esskar
 2004-04-14 03:15
#10933 #10933
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
aber echt! :P
tipp...
benutze ein eigene struct (oder gar klasse) um die zeit zu händeln...
SirLant
 2004-04-14 03:45
#10934 #10934
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Hab ich esskar:

Code (perl): (dl )
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
class CUptime
{
public:
    CUptime(long time = 0);
    ~CUptime(void);

    //Memberfunktionen
    void setTime (long time);

    CString getTime (void);

protected:
    int hours;
    int mins;
    int secs;
    
};


#include <ctime>

CUptime::CUptime(long time /* = 0 */)
{
    setTime (time);
}

CUptime::~CUptime(void)
{
}


void CUptime::setTime (long time)
{
    
    secs = time % 60;
    time -= secs;
    time /= 60;

    mins = time % 60;
    time -= mins;

    time /= 60;
    hours = time;
}

CString CUptime::getTime (void)
{
    CString str;
    str.Format ("%02d:%02d:%02d", hours, mins, secs);
    return str;
}



Edit:
Irgendwie mag das Board die Tabs nicht\n\n

<!--EDIT|SirLant|1081900046-->
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
esskar
 2004-04-14 04:05
#10935 #10935
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
hatte da auch noch nur ur-alt-version
hier mal ein ansatz zum ideen holen:
Code: (dl )
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
56
57
58
59
60
61
62
63
64
65
66
67
68
class CHTime
{
public:
CHTime();
~CHTime();
CHTime operator++(int);
CHTime operator+=(int sec);

void GetAsString(LPSTR lpTime, DWORD cbTime);
void Set(int y, int d, int h, int m, int s);

int GetDay();
int GetYear();
int GetHour();
int GetMinute();
int GetSecond();
int GetAllSeconds();


int GetSecondDifference(CHTime chtime);

private:
int iSec;
int iMin;
int iHour;
int iDay;
int iYear;
};

CHTime CHTime::operator++(int)
{
if(++iSec == 60)
{
iMin++;
iSec = 0;
}

if(iMin == 60)
{
iHour++;
iMin = 0;
}

if(iHour == 24)
{
iDay++;
iHour = 0;
}

if(iDay == 365)
{
iYear++;
iDay = 0;
}

return *this;
}

CHTime CHTime::operator+=(int sec)
{
iSec += sec;
iMin += (iSec / 60); iSec %= 60;
iHour += (iMin / 60); iMin %= 60;
iDay += (iHour / 24); iHour %= 24;
iYear += (iDay / 365); iDay %= 365;

return *this;
}
<< >> 4 Einträge, 1 Seite



View all threads created 2004-04-14 03:11.