Pārlūkot izejas kodu

新增截止时间计算函数

CHENJIE-PC\QiXiang_CHENJIE 3 gadi atpakaļ
vecāks
revīzija
a093c01f85
1 mainītis faili ar 89 papildinājumiem un 47 dzēšanām
  1. 89 47
      src/hal_module_adapter.c

+ 89 - 47
src/hal_module_adapter.c

@@ -197,61 +197,103 @@ led_pin_config_t gLedCfg[LED_INX_MAX]={{LED_PORT_0,LED_GPIO_PIN_1,LED_PAD_INDEX1
 									 {LED_PORT_1,LED_GPIO_PIN_3,LED_PAD_INDEX3, PAD_MuxAlt0},\
 									 {LED_PORT_0,LED_GPIO_PIN_4,LED_PAD_INDEX4, PAD_MuxAlt0},\
 								       {LED_PORT_1,LED_GPIO_PIN_5,LED_PAD_INDEX5, PAD_MuxAlt0}};
-
-void UTCToBeijing(UTC8TimeType* UTC8Time,unsigned int UTCyear,unsigned char UTCmonth,unsigned char UTCday,unsigned int UTChour,unsigned char UTCminute,unsigned char UTCsecond)
+void ExpiryTimeCal(UTC8TimeType* UTC8Time,UINT16 rentalDays,UTC8TimeType* ExpiryUTC8Time)
 {
 	int year=0,month=0,day=0,hour=0;
     int lastday = 0;// ÔµÄ×îºóÒ»ÌìÈÕÆÚ
-    int lastlastday = 0;//ÉÏÔµÄ×îºóÒ»ÌìÈÕÆÚ
-	
-	  year=UTCyear;
-		month=UTCmonth;
-	  day=UTCday;
-	  hour=UTChour+8;//UTC+8ת»»Îª±±¾©Ê±¼ä
 	
-	  if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
+	year=UTC8Time->year;
+	month=UTC8Time->month;
+	day=UTC8Time->day + rentalDays;
+	if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
+	{
+		lastday = 31;
+	}
+    else if(month == 4 || month == 6 || month == 9 || month == 11)
+	{
+		lastday = 30;
+	}
+    else
+	{
+		if((year%400 == 0)||(year%4 == 0 && year%100 != 0))//ÈòÄêµÄ2ÔÂΪ29Ì죬ƽÄêΪ28Ìì
+			lastday = 29;
+		else
+			lastday = 28;
+	}
+	while(day > lastday)//µ±Ëã³öµÄÈÕÆÚ´óÓÚ¸ÃÔÂ×îºóÒ»Ììʱ£¬Ó¦¼õÈ¥¸ÃÔÂ×îºóÒ»ÌìµÄÈÕÆÚ£¬Ô·ݼÓÉÏÒ»¸öÔÂ
+	{ 
+		day -= lastday;
+		month += 1;
+
+		if(month > 12)//µ±Ëã³öµÄÔ·ݴóÓÚ12£¬Ó¦¼õÈ¥12£¬Äê·Ý¼ÓÉÏ1Äê
 		{
-        lastday = 31;
-        if(month == 3)
-				{
-            if((year%400 == 0)||(year%4 == 0 && year%100 != 0))//ÅжÏÊÇ·ñΪÈòÄê
-                lastlastday = 29;//ÈòÄêµÄ2ÔÂΪ29Ì죬ƽÄêΪ28Ìì
-            else
-                lastlastday = 28;
-        }
-        if(month == 8)
-            lastlastday = 31;
-    }
-    else 
-		if(month == 4 || month == 6 || month == 9 || month == 11)
+			month -= 12;
+			year += 1;
+		}
+		if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
 		{
-        lastday = 30;
-        lastlastday = 31;
-    }
-    else
+			lastday = 31;
+		}
+		else if(month == 4 || month == 6 || month == 9 || month == 11)
 		{
-        lastlastday = 31;
-        if((year%400 == 0)||(year%4 == 0 && year%100 != 0))//ÈòÄêµÄ2ÔÂΪ29Ì죬ƽÄêΪ28Ìì
-            lastday = 29;
-        else
-            lastday = 28;
-    }
-		if(hour >= 24)//µ±Ëã³öµÄʱ´óÓÚ»òµÈÓÚ24£º00ʱ£¬Ó¦¼õÈ¥24£º00£¬ÈÕÆÚ¼ÓÒ»Ìì
+			lastday = 30;
+		}
+		else
 		{
-				hour -= 24;
-				day += 1; 
-				if(day > lastday)//µ±Ëã³öµÄÈÕÆÚ´óÓÚ¸ÃÔÂ×îºóÒ»Ììʱ£¬Ó¦¼õÈ¥¸ÃÔÂ×îºóÒ»ÌìµÄÈÕÆÚ£¬Ô·ݼÓÉÏÒ»¸öÔÂ
-				{ 
-						day -= lastday;
-						month += 1;
-
-						if(month > 12)//µ±Ëã³öµÄÔ·ݴóÓÚ12£¬Ó¦¼õÈ¥12£¬Äê·Ý¼ÓÉÏ1Äê
-						{
-								month -= 12;
-								year += 1;
-						}
-				}
+			if((year%400 == 0)||(year%4 == 0 && year%100 != 0))//ÈòÄêµÄ2ÔÂΪ29Ì죬ƽÄêΪ28Ìì
+				lastday = 29;
+			else
+				lastday = 28;
 		}
+	}
+	ExpiryUTC8Time->year = year;
+	ExpiryUTC8Time->month = month;
+	ExpiryUTC8Time->day = day;
+	ExpiryUTC8Time->hour = UTC8Time->hour;
+	ExpiryUTC8Time->minute = UTC8Time->minute;
+	ExpiryUTC8Time->second = UTC8Time->second;
+	return;
+}
+void UTCToBeijing(UTC8TimeType* UTC8Time,unsigned int UTCyear,unsigned char UTCmonth,unsigned char UTCday,unsigned int UTChour,unsigned char UTCminute,unsigned char UTCsecond)
+{
+	int year=0,month=0,day=0,hour=0;
+    int lastday = 0;// ÔµÄ×îºóÒ»ÌìÈÕÆÚ
+	
+	year=UTCyear;
+	month=UTCmonth;
+	day=UTCday;
+	hour=UTChour + 8;//UTC+8ת»»Îª±±¾©Ê±¼ä
+	
+	if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
+	{
+		lastday = 31;
+	}
+    else if(month == 4 || month == 6 || month == 9 || month == 11)
+	{
+		lastday = 30;
+	}
+    else
+	{
+		if((year%400 == 0)||(year%4 == 0 && year%100 != 0))//ÈòÄêµÄ2ÔÂΪ29Ì죬ƽÄêΪ28Ìì
+			lastday = 29;
+		else
+			lastday = 28;
+	}
+	if(hour >= 24)//µ±Ëã³öµÄʱ´óÓÚ»òµÈÓÚ24£º00ʱ£¬Ó¦¼õÈ¥24£º00£¬ÈÕÆÚ¼ÓÒ»Ìì
+	{
+		hour -= 24;
+		day += 1; 
+		if(day > lastday)//µ±Ëã³öµÄÈÕÆÚ´óÓÚ¸ÃÔÂ×îºóÒ»Ììʱ£¬Ó¦¼õÈ¥¸ÃÔÂ×îºóÒ»ÌìµÄÈÕÆÚ£¬Ô·ݼÓÉÏÒ»¸öÔÂ
+		{ 
+			day -= lastday;
+			month += 1;
+			if(month > 12)//µ±Ëã³öµÄÔ·ݴóÓÚ12£¬Ó¦¼õÈ¥12£¬Äê·Ý¼ÓÉÏ1Äê
+			{
+					month -= 12;
+					year += 1;
+			}
+		}
+	}
 		
 	UTC8Time->year = year;
 	UTC8Time->month = month;
@@ -259,8 +301,8 @@ void UTCToBeijing(UTC8TimeType* UTC8Time,unsigned int UTCyear,unsigned char UTCm
 	UTC8Time->hour = hour;
 	UTC8Time->minute = UTCminute;
 	UTC8Time->second = UTCsecond;
+	return;
 }
-#include <stdarg.h>
 #ifdef DEBUGLOG
 static osMutexId_t DebugFileMux;
 static void Debug_Write_Logfile(UINT8 * buf)