static int scan_hldate(const char *date,char *sdate) { char y[128],m[128],d[128],hms[128]; int H,M,S; struct tm tm; time_t udate; y[0] = m[0] = d[0] = hms[0] = 0; sscanf(date,"%[^/]/%[^/]/%[^:]:%[^ ]]",d,m,y,hms); sprintf(sdate,"%s/%02d/%s-%s",y,montoi(m),d,hms); H = M = S = 0; sscanf(hms,"%d:%d:%d",&H,&M,&S); tm.tm_sec = S; tm.tm_min = M; tm.tm_hour = H; tm.tm_mday = atoi(d); tm.tm_mon = montoi(m)-1; tm.tm_year = atoi(y) - 1900; tm.tm_wday = 0; tm.tm_yday = 0; tm.tm_isdst = 0; udate = mktime(&tm); return udate; }
/* * Parse date-time string, and return the corresponding time_t value */ static time_t date_to_epoch(char *s) { DBGPRINT("==>date_to_epoch\n"); struct tm tm; char mon[32]; int sec, min, hour, mday, month, year; (void) memset(&tm, 0, sizeof(tm)); sec = min = hour = mday = month = year = 0; if (((sscanf(s, "%d/%3s/%d %d:%d:%d", &mday, mon, &year, &hour, &min, &sec) == 6) || (sscanf(s, "%d %3s %d %d:%d:%d", &mday, mon, &year, &hour, &min, &sec) == 6) || (sscanf(s, "%*3s, %d %3s %d %d:%d:%d", &mday, mon, &year, &hour, &min, &sec) == 6) || (sscanf(s, "%d-%3s-%d %d:%d:%d", &mday, mon, &year, &hour, &min, &sec) == 6)) && (month = montoi(mon)) != -1) { tm.tm_mday = mday; tm.tm_mon = month; tm.tm_year = year; tm.tm_hour = hour; tm.tm_min = min; tm.tm_sec = sec; } if (tm.tm_year > 1900) tm.tm_year -= 1900; else if (tm.tm_year < 70) tm.tm_year += 100; DBGPRINT("<==date_to_epoch\n"); return (mktime(&tm)); }