Beispiel #1
0
int main(void)
{
	char car_num_str[8] = "A23456";
	int tail_num = 0;	// "A23456" -> 6
	enum day today;	// 1-7
	char last_char;
	int ret;
	
	printf("Please input your car number:\n");
	scanf("%s", car_num_str);	

	printf("car num is %s\n", car_num_str);
	
	/* get the last char of car number string */
	last_char = get_last_char(car_num_str);
	printf("last char is %c\n", last_char);

	tail_num = last_char - '0';
	//today = MONDAY;
	//today = FRIDAY;
	today = get_week_day(2013, 12, 31);
	printf("today is day %d\n", today);

	ret = is_restricted(tail_num, today);
	if (ret == 1)
		printf("restricted!\n");
	else
		printf("NOT restricted!\n");
		

	return 0;
}
Beispiel #2
0
time_t
mktime(struct tm *pt)
{
    time_t res = 0;
    int unix_year;
    time_t year_secs;

    pt->tm_wday = 0;
    pt->tm_yday = 0;
    if (tm_out_of_range(pt)) {
        errno = EOVERFLOW;
        return (time_t)(-1);
    }

    unix_year = (1900 + pt->tm_year) - 1970;

    if (unix_year != 0) {
        if (unix_year < 0) {
            res += get_year_seconds(abs(unix_year) - 1, 1971 + unix_year);
        } else {
            res += get_year_seconds(unix_year, 1970);
        }
    }

    pt->tm_yday = get_yday(pt);

    if (unix_year < 0) {
        year_secs = pt->tm_yday * 86400;
        year_secs += pt->tm_hour * 3600;
        year_secs += pt->tm_min * 60;
        year_secs += pt->tm_sec;
        if (is_leap_year(1970 + unix_year)) {
            res += (31622400 - year_secs);
        } else {
            res += (31536000 - year_secs);
        }
        res = -res;
    } else {
        res += pt->tm_yday * 86400;
        res += pt->tm_hour * 3600;
        res += pt->tm_min * 60;
        res += pt->tm_sec;
    }

    pt->tm_wday = get_week_day(res / 86400);

    _tz_add_offset(&res);
    return res;
}
Beispiel #3
0
int main()  
{  
    switch(get_week_day(time(NULL)))  
    {  
        case 0: std::cout << "是星期一" << std::endl;; break;  
        case 1: std::cout << "是星期二" << std::endl;; break;  
        case 2: std::cout << "是星期三" << std::endl;; break;  
        case 3: std::cout << "是星期四" << std::endl;; break;  
        case 4: std::cout << "是星期五" << std::endl;; break;  
        case 5: std::cout << "是星期六" << std::endl;; break;  
        case 6: std::cout << "是星期日" << std::endl;; break;  
        default: std::cout << "unknown weekday." << std::endl; break;
    }
    
    return 0;  
}  
static void
manipulate_time (MnpAlarmInstance *alarm, MnpAlarmItem *item, time_t now)
{
  MnpAlarmInstancePrivate *priv = ALARM_INSTANCE_PRIVATE(alarm);

  if (!item->repeat) {
	gboolean secs;
	time_t start = get_start_of_day(now);

	secs = calculate_seconds(item);

	if ((start+secs) < now) /* No notification, and its already over and not repeatable*/
		priv->next_notification_time = 0;
	else
		priv->next_notification_time = start + secs - now;
	
  } else {
	int wday = get_week_day(now);
	int repeat = alarm_ins_recur_table[item->repeat].id;

	if (repeat & (1 << wday)) {
		time_t secs;
		time_t start = get_start_of_day(now);

		secs = calculate_seconds(item);
		if ((start+secs) > now) /* No notification, and its already over and not repeatable*/
			priv->next_notification_time = start + secs - now;
		else {
			int i=wday+1;
			int numdays=0;
		
			while ((repeat & (1 << i)) == 0) {
				i++; 
				if (i>6) {
					i=0;
				}
			}
			
			if (i > wday) {
				numdays = i-wday-1;
			} else 
				numdays = 6 - wday + i;
			
			start = get_start_of_nextday(now);
			start += numdays * 24 * 60 * 60;

			priv->next_notification_time = start + secs - now;
		}
	} else {
		int i=wday+1;
		int numdays=0;
		time_t start;

		time_t secs = calculate_seconds(item);

		while ((repeat & (1 << i)) == 0) {
			i++; 
			if (i>6) {
				i=0;
			}
		}
			
		if (i > wday) {
			numdays = i-wday-1;
		} else 
			numdays = 6 - wday + i;
			
		start = get_start_of_nextday(now);
		start += numdays * 24 * 60 * 60;

		priv->next_notification_time = start + secs - now;
	}
  }
  {
	  time_t next = now+priv->next_notification_time;
	  printf("Loading Alarm at %s", ctime(&next));
  }
}
Beispiel #5
0
int ID_HNDR_GCU_DL_Week::ExecuteTask(KSGDeviceNode* node,Task* task)
{
	int ret,seqno;
	try
	{
		seqno = task->GetParams().GetParamIntVal(XML_KEY_SEQNO);
	}
	catch (...)
	{
		return TASK_ERR_PARAM;
	}
	int day1_id,day2_id,day3_id,day4_id,day5_id,day6_id,day7_id;
	day1_id = get_week_day(task->GetParams(),XML_KEY_WEEK_DAY1);
	day2_id = get_week_day(task->GetParams(),XML_KEY_WEEK_DAY2);
	day3_id = get_week_day(task->GetParams(),XML_KEY_WEEK_DAY3);
	day4_id = get_week_day(task->GetParams(),XML_KEY_WEEK_DAY4);
	day5_id = get_week_day(task->GetParams(),XML_KEY_WEEK_DAY5);
	day6_id = get_week_day(task->GetParams(),XML_KEY_WEEK_DAY6);
	day7_id = get_week_day(task->GetParams(),XML_KEY_WEEK_DAY7);

	HNDR_HANDLE hd = (HNDR_HANDLE)task->_handle;
	int begin_addr = GCU_TABLE_WEEK_BEGIN + seqno * GCU_WEEK_LEN;
	unsigned char week_def[7];
	week_def[0] = static_cast<unsigned char>(day1_id);
	week_def[1] = static_cast<unsigned char>(day2_id);
	week_def[2] = static_cast<unsigned char>(day3_id);
	week_def[3] = static_cast<unsigned char>(day4_id);
	week_def[4] = static_cast<unsigned char>(day5_id);
	week_def[5] = static_cast<unsigned char>(day6_id);
	week_def[6] = static_cast<unsigned char>(day7_id);
	unsigned char matrix_tbl[512] = "";
	size_t matrix_len;
	ret = gcu_encode_matrix_table(week_def,sizeof week_def,begin_addr
		,matrix_tbl,&matrix_len);
	if(ret || matrix_len > 7*3+1 || matrix_len <= 0)
		return TASK_ERR_PARAM;
	KSGDeviceNode *task_node = task->GetDeviceNode();
	ACE_ASSERT(task_node != NULL);
	KSGDeviceNode *task_parent = task_node->GetParent();
	ACE_ASSERT(task_parent != NULL);
	int gcu_errcode = 0;
	ret = hsGCUMatrixWriteTable(hd,task_parent->GetTermId(),matrix_tbl,(int)matrix_len
		,&gcu_errcode,g_gcu_default_timeout);
	char errmsg[512] = "";
	KSGTaskResponse &resp = task->GetResponse();
	if(ret)
	{
		gcu_get_return_errmsg(ret,errmsg);
		ACE_DEBUG((LM_ERROR,"下传设备时间段错误,ret[%d][%s]"
			,ret,errmsg));
		if(gcu_errcode > 0)
		{
			gcu_get_return_errmsg(gcu_errcode,errmsg);
			resp.AddField(KEY_TASK_ERR_MSG,errmsg);
		}
		return TASK_ERR_EXECUTE;
	}

	resp.AddField(XML_KEY_SEQNO,seqno);
	resp.AddField(XML_KEY_MAJOR_DEV,task_node->GetParent()->GetDevId());
	resp.AddField(XML_KEY_MINOR_DEV,-1);
	return TASK_SUCCESS;
}