コード例 #1
0
ファイル: dglogs.c プロジェクト: Nervous-/Psiphon3-for-Linux
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;
}
コード例 #2
0
ファイル: shttpd_request.c プロジェクト: orange1438/SHTTPD
/*
 * 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));
}