Add -u option to date (POSIX and Plan 9, and useful)
This commit is contained in:
parent
3863ccdf98
commit
c018f86fc7
4
date.1
4
date.1
@ -5,6 +5,7 @@ date \- print date and time
|
||||
.B date
|
||||
.RB [ \-d
|
||||
.IR time ]
|
||||
.RB [ \-u ]
|
||||
.RI [+ format ]
|
||||
.SH DESCRIPTION
|
||||
.B date
|
||||
@ -18,5 +19,8 @@ is given it is used to format the date as per
|
||||
prints
|
||||
.I time
|
||||
instead of the system time, given as the number of seconds since the Unix epoch.
|
||||
.TP
|
||||
.B \-u
|
||||
prints UTC time instead of local time.
|
||||
.SH SEE ALSO
|
||||
.IR strftime (3)
|
||||
|
12
date.c
12
date.c
@ -11,21 +11,27 @@ main(int argc, char *argv[])
|
||||
char buf[BUFSIZ], c;
|
||||
char *fmt = "%c";
|
||||
struct tm *now = NULL;
|
||||
struct tm *(*tztime)(const time_t *) = localtime;
|
||||
const char *tz = "local";
|
||||
time_t t;
|
||||
|
||||
t = time(NULL);
|
||||
while((c = getopt(argc, argv, "d:")) != -1)
|
||||
while((c = getopt(argc, argv, "d:u")) != -1)
|
||||
switch(c) {
|
||||
case 'd':
|
||||
t = estrtol(optarg, 0);
|
||||
break;
|
||||
case 'u':
|
||||
tztime = gmtime;
|
||||
tz = "gm";
|
||||
break;
|
||||
default:
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if(optind < argc && argv[optind][0] == '+')
|
||||
fmt = &argv[optind][1];
|
||||
if(!(now = localtime(&t)))
|
||||
eprintf("localtime failed\n");
|
||||
if(!(now = tztime(&t)))
|
||||
eprintf("%stime failed\n", tz);
|
||||
|
||||
strftime(buf, sizeof buf, fmt, now);
|
||||
puts(buf);
|
||||
|
Loading…
Reference in New Issue
Block a user