예제 #1
0
파일: ref.cpp 프로젝트: att/uwin
void sortify_date(const char *s, int len, string &key)
{
  const char *year_end;
  const char *year_start = find_year(s, s + len, &year_end);
  if (!year_start) {
    // Things without years are often `forthcoming', so it makes sense
    // that they sort after things with explicit years.
    key += 'A';
    sortify_words(s, s + len, 0, key);
    return;
  }
  int n = year_end - year_start;
  while (n < 4) {
    key += '0';
    n++;
  }
  while (year_start < year_end)
    key += *year_start++;
  int m = find_month(s, s + len);
  if (m < 0)
    return;
  key += 'A' + m;
  const char *day_end;
  const char *day_start = find_day(s, s + len, &day_end);
  if (!day_start)
    return;
  if (day_end - day_start == 1)
    key += '0';
  while (day_start < day_end)
    key += *day_start++;
}
예제 #2
0
파일: http.c 프로젝트: mr-xiangxu/sws
void parse_date(char *str, struct tm* t){
	char wkday[BUFF_SIZE];
	char weekday[BUFF_SIZE];
	char month[BUFF_SIZE];
	int day;
	int year;
	int h;
	int m;
	int s;

	if(sscanf(str, "%400[a-zA-Z] %400[a-zA-Z] %d %d:%d:%d %d", 
		wkday, month, &day, &h, &m, &s, &year) == 7){

		t->tm_wday = find_wkday(wkday);
		t->tm_year = year - 1900;
		t->tm_mon = find_month(month);
		t->tm_mday = day;
		t->tm_hour = h;
		t->tm_min = m;
		t->tm_sec = s;

	}else if(sscanf(str, "%400[a-zA-Z], %d-%400[a-zA-Z]-%d %d:%d:%d GMT", 
		weekday, &day, month, &year, &h, &m, &s) == 7){
		
		t->tm_wday = find_weekday(wkday);
		t->tm_year = year;
		t->tm_mon = find_month(month);
		t->tm_mday = day;
		t->tm_hour = h;
		t->tm_min = m;
		t->tm_sec = s;
	}else if(sscanf(str, "%400[a-zA-Z], %d %400[a-zA-Z] %d %d:%d:%d GMT", 
		wkday, &day, month, &year, &h, &m, &s) == 7){
		t->tm_wday = find_wkday(wkday);
		t->tm_year = year - 1900;
		t->tm_mon = find_month(month);
		t->tm_mday = day;
		t->tm_hour = h;
		t->tm_min = m;
		t->tm_sec = s;
	}else{
		t = NULL;
	}
}