Repository navigation
Expand file tree
/
Copy pathtimestamp2.cpp
More file actions
128 lines (108 loc) · 2.16 KB
/
Copy pathtimestamp2.cpp
File metadata and controls
128 lines (108 loc) · 2.16 KB
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*
timestamp2.cpp: Zeige Uhrzeit und Schaltjahr
*/
#include <iostream>
struct Zeit
{
protected:
static int timeZone;
private:
int stunde, minute, sekunde;
public:
Zeit( int stunde, int minute, int sekunde );
~Zeit();
int getLocalHour() const
{
int stunde = this->stunde - timeZone;
if( stunde < 0 )
stunde += 24;
else if( stunde >= 24 )
stunde -= 24;
return stunde;
}
int getGMThour() const
{
return stunde;
}
int getMinute() const
{
return minute;
}
int getSekunde() const
{
return sekunde;
}
};
struct Datum
{
private:
int tag,
monat,
jahr;
public:
Datum( int tag, int monat, int jahr ) : tag(tag), monat(monat), jahr(jahr)
{
}
bool isLeap() const
{
return isLeap( jahr );
}
static bool isLeap( int jahr );
void setYear( int jahr )
{
this->jahr = jahr;
}
int getJahr() const
{
return jahr;
}
int getDay() const
{
return tag;
}
};
bool Datum::isLeap( int jahr )
{
if( (jahr % 4) != 0 )
return false;
if( (jahr % 400) == 0 )
return true;
if( (jahr % 100) == 0 )
return false;
return true;
}
class Zeitstempel : public Datum, public Zeit
{
public:
Zeitstempel(int tag, int monat, int jahr, int stunde, int minute, int sekunde) :
Datum(tag, monat, jahr), Zeit(stunde, minute, sekunde)
{
}
int getLocalDay() const
{
int tag = getDay();
int stunde = getGMThour() - timeZone;
if( stunde < 0 )
--tag;
else if( stunde >= 24 )
++tag;
return tag;
}
};
Zeit::Zeit( int stunde, int minute, int sekunde ) : stunde(stunde), minute(minute), sekunde(sekunde)
{
}
Zeit::~Zeit()
{
std::cout << "Auf wiedersehen" << std::endl;
}
int Zeit::timeZone = -1;
int main()
{
Zeitstempel zeit( 11, 3, 1964, 23, 35, 0 );
std::cout << "Lokale Uhrzeit: " << zeit.getLocalDay() << ' ' << zeit.getLocalHour() << ':' << zeit.getMinute() << ':' << zeit.getSekunde() << std::endl;
std::cout << "GMT : " << zeit.getDay() << ' ' << zeit.getGMThour() << ':' << zeit.getMinute() << ':' << zeit.getSekunde() << std::endl;
std::cout << zeit.getJahr() << " ist " << (zeit.isLeap() ? "ein" : "kein") << " Schaltjahr." << std::endl;
std::cout << "Jetzt wird aufgeräumt" << std::endl;
return 0;
}