|
@@ -3353,18 +3353,98 @@ int getStartStop(uint8_t *start, uint8_t *stop)
|
|
|
int isOvertNow(uint8_t *start)
|
|
|
{
|
|
|
int result = NO;
|
|
|
+ struct ParsingResult
|
|
|
+ {
|
|
|
+ int result;
|
|
|
+ int scanedElement;
|
|
|
+ int year;
|
|
|
+ int month;
|
|
|
+ int mday;
|
|
|
+ int hour;
|
|
|
+ int min;
|
|
|
+ int sec;
|
|
|
+ int tz_hour;
|
|
|
+ int tz_min;
|
|
|
+ float minSec;
|
|
|
+ }parsingResult;
|
|
|
+
|
|
|
struct tm tmStart;
|
|
|
struct timeb tbStart;
|
|
|
|
|
|
- if((sscanf((char*)start, "%4d-%2d-%2dT%2d:%2d:%2d", &tmStart.tm_year, &tmStart.tm_mon, &tmStart.tm_mday, &tmStart.tm_hour, &tmStart.tm_min, &tmStart.tm_sec) == 6))
|
|
|
+ if(strstr((char*)start, ".") != NULL)
|
|
|
{
|
|
|
- //DEBUG_INFO("Start: %d-%d-%d %d:%d:%d\n", tmStart.tm_year, tmStart.tm_mon, tmStart.tm_mday, tmStart.tm_hour, tmStart.tm_min, tmStart.tm_sec);
|
|
|
-
|
|
|
- tmStart.tm_year -= 1900;
|
|
|
- tmStart.tm_mon -= 1;
|
|
|
+ // Original data with mini second
|
|
|
+ if(strstr((char*)start, "Z") != NULL)
|
|
|
+ {
|
|
|
+ // Original data with Z
|
|
|
+ parsingResult.scanedElement = sscanf((char*)start, "%d-%d-%dT%d:%d:%d.%fZ",
|
|
|
+ &parsingResult.year,
|
|
|
+ &parsingResult.month,
|
|
|
+ &parsingResult.mday,
|
|
|
+ &parsingResult.hour,
|
|
|
+ &parsingResult.min,
|
|
|
+ &parsingResult.sec,
|
|
|
+ &parsingResult.minSec);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // Original data without Z
|
|
|
+ parsingResult.scanedElement = sscanf((char*)start, "%d-%d-%dT%d:%d:%d.%f%d:%d",
|
|
|
+ &parsingResult.year,
|
|
|
+ &parsingResult.month,
|
|
|
+ &parsingResult.mday,
|
|
|
+ &parsingResult.hour,
|
|
|
+ &parsingResult.min,
|
|
|
+ &parsingResult.sec,
|
|
|
+ &parsingResult.minSec,
|
|
|
+ &parsingResult.tz_hour,
|
|
|
+ &parsingResult.tz_min);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // Original data without mini second
|
|
|
+ if(strstr((char*)start, "Z") != NULL)
|
|
|
+ {
|
|
|
+ // Original data with Z
|
|
|
+ parsingResult.scanedElement = sscanf((char*)start, "%d-%d-%dT%d:%d:%dZ",
|
|
|
+ &parsingResult.year,
|
|
|
+ &parsingResult.month,
|
|
|
+ &parsingResult.mday,
|
|
|
+ &parsingResult.hour,
|
|
|
+ &parsingResult.min,
|
|
|
+ &parsingResult.sec);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // Original data without Z
|
|
|
+ parsingResult.scanedElement = sscanf((char*)start, "%d-%d-%dT%d:%d:%d%d:%d",
|
|
|
+ &parsingResult.year,
|
|
|
+ &parsingResult.month,
|
|
|
+ &parsingResult.mday,
|
|
|
+ &parsingResult.hour,
|
|
|
+ &parsingResult.min,
|
|
|
+ &parsingResult.sec,
|
|
|
+ &parsingResult.tz_hour,
|
|
|
+ &parsingResult.tz_min);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(parsingResult.scanedElement >= 6)
|
|
|
+ {
|
|
|
+ tmStart.tm_year = parsingResult.year - 1900;
|
|
|
+ tmStart.tm_mon = parsingResult.month - 1;
|
|
|
+ tmStart.tm_mday = parsingResult.mday;
|
|
|
+ tmStart.tm_hour = parsingResult.hour;
|
|
|
+ tmStart.tm_min = parsingResult.min;
|
|
|
+ tmStart.tm_sec = parsingResult.sec;
|
|
|
+ tmStart.tm_gmtoff = 0;
|
|
|
tbStart.time = mktime(&tmStart);
|
|
|
+ tbStart.timezone = 0;
|
|
|
tbStart.millitm = 0;
|
|
|
|
|
|
+ tbStart.time -= (parsingResult.tz_hour*3600) + (parsingResult.tz_min*60*(parsingResult.tz_hour>=0?1:-1));
|
|
|
+
|
|
|
if(DiffTimebWithNowSec(tbStart) <= 0)
|
|
|
result = NO;
|
|
|
else
|