man print_time_table (Fonctions bibliothèques) - parse_time ,
NAME
LIBRARY
The roken library (libroken, -lroken)
SYNOPSIS
DESCRIPTION
The parse_time function converts a the period of time specified in into a number of seconds. The timespec can be any number of pairs separated by comma and whitespace. The number can be negative. Number without explicit units are taken as being def_unit .
The unparse_time and unparse_time_approx does the opposite of parse_time , that is they take a number of seconds and express that as human readable string. unparse_time produces an exact time, while unparse_time_approx restricts the result to only include one units.
print_time_table prints a descriptive list of available units on the passed file descriptor.
The possible units include:
- second , s
- minute , m
- hour , h
- day
- week
- seven days
- month
- 30 days
- year
- 365 days
Units names can be arbitrarily abbreviated (as long as they are unique).
RETURN VALUES
returns the number of seconds that represents the expression in timespec or -1 on error. unparse_time and unparse_time_approx return the number of characters written to buf . if the return value is greater than or equal to the len argument, the string was too short and some of the printed characters were discarded.
EXAMPLES
#include <stdio.h> #include <parse_time.h>
int main(int argc, char **argv) { int i; int result; char buf[128]; print_time_table(stdout); for (i = 1; i < argc; i++) { result = parse_time(argv[i], "second"); if(result == -1) { fprintf(stderr, "%s: parse error\n", argv[i]); continue; } printf("--\n"); printf("parse_time = %d\n", result); unparse_time(result, buf, sizeof(buf)); printf("unparse_time = %s\n", buf); unparse_time_approx(result, buf, sizeof(buf)); printf("unparse_time_approx = %s\n", buf); } return 0; } $ ./a.out "1 minute 30 seconds" "90 s" "1 y -1 s" 1 year = 365 days 1 month = 30 days 1 week = 7 days 1 day = 24 hours 1 hour = 60 minutes 1 minute = 60 seconds 1 second -- parse_time = 90 unparse_time = 1 minute 30 seconds unparse_time_approx = 1 minute -- parse_time = 90 unparse_time = 1 minute 30 seconds unparse_time_approx = 1 minute -- parse_time = 31535999 unparse_time = 12 months 4 days 23 hours 59 minutes 59 seconds unparse_time_approx = 12 months
BUGS
Since parse_time returns -1 on error there is no way to parse "minus one second". Currently "s" at the end of units is ignored. This is a hack for English plural forms. If these functions are ever localised, this scheme will have to change.