// Like StrToDate but using Time
const char *StrToTime(struct Upp::Time& d, const char *s) {
s = StrToDate(d, s);
d.hour = d.minute = d.second = 0;
const char *fmt = "hms";
while(*fmt) {
while(*s && !IsDigit(*s))
s++;
int n;
if(IsDigit(*s)) {
char *q;
n = strtoul(s, &q, 10);
s = q;
} else
break;
switch(*fmt) {
case 'h':
if(n < 0 || n > 23)
return NULL;
d.hour = n;
break;
case 'm':
if(n < 0 || n > 59)
return NULL;
d.minute = n;
break;
case 's':
if(n < 0 || n > 59)
return NULL;
d.second = n;
break;
default:
NEVER();
}
fmt++;
}
return d.IsValid() ? s : NULL;
}
Time StrToTime(const char *s) {
Time ret;
StrToTime(ret, s);
return ret;
}