cgv
Loading...
Searching...
No Matches
date_time.cxx
1#include "date_time.h"
2#include <time.h>
3
4#ifdef _WIN32
5#pragma warning(disable:4996)
6#endif
7
8namespace cgv {
9 namespace utils {
10
11time::time(unsigned char _h, unsigned _min, unsigned char _sec)
12 : h(_h), minutes(_min), sec(_sec)
13{
14}
15
16
17date::date(unsigned short _year, unsigned char _month, unsigned char _day)
18 : year(_year), month(_month), day(_day)
19{
20}
21
22date_time::date_time(const time& t, const date& d)
23 : date(d), time(t)
24{
25}
26date_time::date_time(const date& d)
27 : date(d)
28{
29}
30
31
32time_t convert_to_time(const date_time& dt)
33{
34 tm t;
35 t.tm_sec = dt.sec;
36 t.tm_min = dt.minutes;
37 t.tm_hour = dt.h;
38 t.tm_mday = dt.day-1;
39 t.tm_mon = dt.month-1;
40 t.tm_year = dt.year;
41// t.tm_wday;
42// t.tm_yday;
43 return mktime(&t);
44}
45
46date_time convert_to_date_time(time_t ti)
47{
48 const tm& t = *gmtime(&ti);
49 return date_time(time(t.tm_hour,t.tm_min,t.tm_sec),date(t.tm_year,t.tm_mon+1,t.tm_mday+1));
50}
51
53long date_time::operator - (const date_time& dt) const
54{
55 return (long)convert_to_time(*this)-(long)convert_to_time(dt);
56}
57
59date_time date_time::operator + (long secs) const
60{
61 return convert_to_date_time(convert_to_time(*this)+secs);
62}
63
65date_time date_time::operator - (long secs) const
66{
67 return convert_to_date_time(convert_to_time(*this)-secs);
68}
69
70date_time now()
71{
72 return convert_to_date_time(::time(NULL));
73}
74
75std::ostream& operator << (std::ostream& os, const time& T)
76{
77 return os << int(T.h) << ':' << int(T.minutes) << ':' << int(T.sec);
78}
79
80std::ostream& operator << (std::ostream& os, const date& D)
81{
82 return os << int(D.day) << '.' << int(D.month) << '.' << int(D.year);
83}
84
85std::ostream& operator << (std::ostream& os, const date_time& DT)
86{
87 return os << static_cast<const time&>(DT) << ' ' << static_cast<const date&>(DT);
88}
89
90 }
91}
the cgv namespace
Definition print.h:11