]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/date.c
ndb/dns: remove single-ip-address assuptions
[plan9front.git] / sys / src / cmd / date.c
1 #include <u.h>
2 #include <libc.h>
3
4 int uflg, nflg, iflg, tflg;
5
6 char*
7 isodate(Tm *t)
8 {
9         static char c[25]; /* leave room to append isotime */
10         snprint(c, 11, "%04d-%02d-%02d", 
11                 t->year + 1900, t->mon + 1, t->mday);
12         return c;
13 }
14
15 char*
16 isotime(Tm *t)
17 {
18         int tz;
19         char *c, *d;
20         d = isodate(t);
21         c = d+10;
22         snprint(c, 10, "T%02d:%02d:%02d",
23                 t->hour, t->min, t->sec); /* append to isodate */
24         tz = t->tzoff / 60;
25         if(t->tzoff) {
26                 /* localtime */
27                 if (t->tzoff > 0) {
28                         c[9] = '+';
29                 } else {
30                         c[9] = '-';
31                         tz = -tz;
32                 }
33                 snprint(c+10, 5, "%02d%02d", tz / 60, tz % 60);
34         } else {
35                 c[9] = 'Z';
36                 c[10] = 0;
37         }
38         return d;
39 }
40
41 void
42 main(int argc, char *argv[])
43 {
44         ulong now;
45         Tm *tm;
46         ARGBEGIN{
47         case 'n':       nflg = 1; break;
48         case 'u':       uflg = 1; break;
49         case 't':       tflg = 1; /* implies -i */
50         case 'i':       iflg = 1; break;
51         default:        fprint(2, "usage: date [-itun] [seconds]\n"); exits("usage");
52         }ARGEND
53
54         if(argc == 1)
55                 now = strtoul(*argv, 0, 0);
56         else
57                 now = time(0);
58
59         if(nflg)
60                 print("%ld\n", now);
61         else {
62                 tm = uflg ? gmtime(now) : localtime(now);
63                 if(iflg) {
64                         if(tflg)
65                                 print("%s\n", isotime(tm));
66                         else
67                                 print("%s\n", isodate(tm));
68                 } else
69                         print("%s", asctime(tm));
70         }
71         exits(0);
72 }