Exemplo n.º 1
0
/* Fri Jul 23 14:05:14 EDT 1999 */
ulong
parsedatev(char **a)
{
	char *p;
	Tm tm;

	memset(&tm, 0, sizeof tm);
	if((tm.mon=getmon(a[1])) == -1)
		goto Err;
	tm.mday = strtol(a[2], &p, 10);
	if(*p != '\0')
		goto Err;
	tm.hour = strtol(a[3], &p, 10);
	if(*p != ':')
		goto Err;
	tm.min = strtol(p+1, &p, 10);
	if(*p != ':')
		goto Err;
	tm.sec = strtol(p+1, &p, 10);
	if(*p != '\0')
		goto Err;
	if(strlen(a[4]) != 3)
		goto Err;
	strcpy(tm.zone, a[4]);
	if(strlen(a[5]) != 4)
		goto Err;
	tm.year = strtol(a[5], &p, 10);
	if(*p != '\0')
		goto Err;
	tm.year -= 1900;
	return tm2sec(&tm);
Err:
	return time(0);
}
Exemplo n.º 2
0
static void value2time(CONFIG_RTC _PTR_ para, uint_32 value)
{
	uint_32	sec, min, hour;
	uint_32 	tmpdate;
	uint_32	date, mon, year;
	uint_32    day;
	int flag = -1;	
	uint_32 i, count;

	sec = value%60;
	value = value/60;
	min = value%60;
	value = value/60;
	hour = value%24;
	value = value/24;

	tmpdate = value%365;
	year = value/365;
	value = tmpdate;
	for(i=0, count=0; i<=year; ){
		if(((baseyear+i)%400 == 0) || (((baseyear+i)%4 == 0)&&((baseyear+i)%100 != 0)))
			count++;
		i++;
	}

	flag = (((baseyear+year)%400 == 0) || (((baseyear+year)%4 == 0)&&((baseyear+year)%100 != 0)))?1:0;

	if(value > count){
		tmpdate = (value-count)%365;
		if(flag == 1)
			tmpdate += 1;
	}else if(value == count){
		if(year > 0){
			if(flag == 1)
				count -= 1;
			year = year -1;
			flag = (((baseyear+year)%400 == 0) || (((baseyear+year)%4 == 0)&&((baseyear+year)%100 != 0)))?1:0;
			if(flag == 1)
				tmpdate += 366;
			else
				tmpdate += 365;
			tmpdate = (tmpdate-count);
			if(flag == 1 && tmpdate > 366){
				tmpdate -= 366;
				year += 1;
				flag = 0;
			}else if(flag != 1 && tmpdate > 365){
				tmpdate -= 365;
				year += 1;
				flag = (((baseyear+year)%400 == 0) || (((baseyear+year)%4 == 0)&&((baseyear+year)%100 != 0)))?1:0;
			}	
		}else{
			if(flag == 1)
				tmpdate = 1;
			else
				tmpdate = 0;
		}
	}else{
		if(year > 0){
			if(flag == 1)
				count -= 1;
			year = year -1;
			flag = (((baseyear+year)%400 == 0) || (((baseyear+year)%4 == 0)&&((baseyear+year)%100 != 0)))?1:0;
			if(flag == 1)
				tmpdate += 366;
			else
				tmpdate += 365;
			tmpdate = (tmpdate-count);
		}else
			tmpdate = 0;		
	}

	mon = getmon(tmpdate, flag, &date);

	para->DATE = basedate+mon*100+date;
	para->YEAR = baseyear+year;
	para->TIME = (hour*100+min)*100+sec;
}