1 #include "mytime.h"
2 #include <time.h>
3 #include <stdlib.h>
4 #ifdef WIN32
5 #include <windows.h>
6 #endif
7 #include "debug.h"
8
getLocalTime(time_t * when)9 struct tm *getLocalTime(time_t *when)
10 {
11 struct tm *mytime;
12 int free_when = 0;
13
14 if (when == NULL)
15 {
16 when = malloc(sizeof(time_t));
17 *when = time((time_t *)NULL);
18 free_when = 1;
19 }
20
21 #ifndef WIN32
22 mytime = (struct tm *)malloc(sizeof(struct tm));
23 localtime_r(when, mytime);
24 #else
25 mytime = localtime(when);
26 #endif
27 if (mytime == NULL)
28 {
29 _ERROR("Memory allocation failed.");
30 exit(1);
31 }
32
33 if (free_when)
34 free(when);
35 return mytime;
36 }
37
getHour()38 int getHour()
39 {
40 struct tm *mytime;
41 int hour = 0;
42
43 mytime = getLocalTime((time_t *)NULL);
44 hour = mytime->tm_hour;
45 #ifndef WIN32
46 free(mytime);
47 #endif
48 return hour;
49 }
50
51 #ifndef WIN32
getDayName(time_t when)52 char *getDayName(time_t when)
53 {
54 struct tm *mytime;
55 char *dayName;
56
57 mytime = getLocalTime(&when);
58 dayName = (char *)calloc(20, 1); /* Large vision! */
59 strftime(dayName, 20, "%A", mytime);
60 free(mytime);
61 return dayName;
62 }
63 #else
UnixTimeToFileTime(time_t t,LPFILETIME pft)64 void UnixTimeToFileTime(time_t t, LPFILETIME pft)
65 {
66 LONGLONG ll;
67
68 ll = Int32x32To64(t, (long long)10000000LL);
69 ll += (long long int)116444736000000000LL;
70 pft->dwLowDateTime = (DWORD)ll;
71 pft->dwHighDateTime = ll >> 32;
72 }
73
UnixTimeToSystemTime(time_t t,LPSYSTEMTIME pst)74 void UnixTimeToSystemTime(time_t t, LPSYSTEMTIME pst)
75 {
76 FILETIME ft;
77
78 UnixTimeToFileTime(t, &ft);
79 FileTimeToSystemTime(&ft, pst);
80 }
81
getDayName(time_t when)82 char *getDayName(time_t when)
83 {
84 SYSTEMTIME Time;
85 char *dayName;
86
87 /* GetLocalTime(&Time); */
88 UnixTimeToSystemTime(when, &Time);
89 dayName = (char *)malloc(20);
90 if (GetDateFormat(LOCALE_USER_DEFAULT, 0, &Time, "dddd", dayName, 20) == 0)
91 {
92 printf("Error in GetDateFormat.\n");
93 return NULL;
94 }
95 return dayName;
96 }
97 #endif
98
getSec()99 int getSec()
100 {
101 struct tm *mytime;
102 int sec = 0;
103
104 mytime = getLocalTime((time_t *)NULL);
105 sec = mytime->tm_sec;
106 #ifndef WIN32
107 free(mytime);
108 #endif
109 return sec;
110 }
111
getMinute()112 int getMinute()
113 {
114 struct tm *mytime;
115 int min = 0;
116
117 mytime = getLocalTime((time_t *)NULL);
118 min = mytime->tm_min;
119 #ifndef WIN32
120 free(mytime);
121 #endif
122 return min;
123 }
124
getYear()125 int getYear()
126 {
127 struct tm *mytime;
128 int year = 0;
129
130 mytime = getLocalTime((time_t *)NULL);
131 year = mytime->tm_year;
132 #ifndef WIN32
133 free(mytime);
134 #endif
135 return year;
136 }
137
getMonth()138 int getMonth()
139 {
140 struct tm *mytime;
141 int month = 0;
142
143 mytime = getLocalTime((time_t *)NULL);
144 month = mytime->tm_mon;
145 #ifndef WIN32
146 free(mytime);
147 #endif
148 return month;
149 }
150