localtime.c - vx32 - Local 9vx git repository for patches.
(HTM) git clone git://r-36.net/vx32
(DIR) Log
(DIR) Files
(DIR) Refs
---
localtime.c (783B)
---
1 #include <time.h>
2
3 static int mday[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
4
5 struct tm *localtime(const time_t *tp)
6 {
7 time_t t = *tp;
8 static struct tm tm;
9
10 tm.tm_sec = t % 60;
11 t /= 60;
12 tm.tm_min = t % 60;
13 t /= 60;
14 tm.tm_hour = t % 24;
15 t /= 24;
16 tm.tm_wday = (t + 4) % 7; // Jan 1 1970 = Thursday
17
18 int isleap = 0;
19 for (tm.tm_year=70;; tm.tm_year++) {
20 isleap = (tm.tm_year+1900)%4 == 0;
21 if (t < 365 + isleap)
22 break;
23 t -= 365 + isleap;
24 }
25
26 tm.tm_yday = t;
27 for (tm.tm_mon=0;; tm.tm_mon++) {
28 isleap = (tm.tm_year+1900)%4 == 0 && tm.tm_mon == 1;
29 if (t < mday[tm.tm_mon] + isleap)
30 break;
31 t -= mday[tm.tm_mon] + isleap;
32 }
33 tm.tm_mday = t + 1;
34 tm.tm_isdst = 0;
35
36 return &tm;
37 }
38
39 struct tm *gmtime(const time_t *tp)
40 {
41 return localtime(tp);
42 }