Return Type | Function name | Arguments |
---|---|---|
unsigned int | IsFormalDate | (hzXDate&,hzChain::Iter&,) |
Declared in file: hzTextproc.h
Defined in file : hzDate.cpp
Function Logic:
Function body:
unsigned int IsFormalDate (hzXDate& date, hzChain::Iter& ci) { chIter zi ; hzTimezone tz ; uint32_t n ; uint32_t dow = NULL_DOW ; uint32_t len = 0; uint32_t Y = 0; uint32_t M = 0; uint32_t D = 0; uint32_t h = 0; uint32_t m = 0; uint32_t s = 0; uint32_t hOset = 0; uint32_t mOset = 0; char numBuf[4]; zi = ci ; tz.clear() ; for (; !zi.eof() ;) { if (*zi < CHAR_SPACE) break ; if (*zi == CHAR_SPACE || *zi == CHAR_COMMA || *zi == CHAR_PAROPEN || *zi == CHAR_PARCLOSE) { len++ ; zi++ ; continue ; } if (IsDigit(*zi)) { n = IsTime(h, m, s, zi) ; if (n) zi += n ; else { for (n = 0; IsDigit(*zi) ; zi++) { n *= 10;n += (*zi - ''0'');} if (n < 32&&D == 0) D = n ; else if (n < 10000&&Y==0)Y= n ; else return 0; } } if (IsAlpha(*zi)) { if (dow == NULL_DOW) { for (n = 0; n < 7; n++) if (zi == hz_daynames_full[n]) { dow = n ; break ; } if (dow == NULL_DOW) { for (n = 0; n < 7; n++) if (zi == hz_daynames_abrv[n]) { dow = n ; break ; } } if (dow != 8) { for (; IsAlpha(*zi) ; zi++) ; continue ; } } if (M == 0) { for (n = 0; n < 12;n++) if (zi == hz_monthnames_full[n]) { M = n + 1; break ; } if (M == 0) { for (n = 0; n < 12;n++) if (zi == hz_monthnames_abrv[n]) { M = n + 1; break ; } } if (M >&eq; 0) { for (; IsAlpha(*zi) ; zi++) ; continue ; } } if (!tz.code) { for (n = 0;; n++) { if (zi == _hzGlobal_Timezones[n].code) { tz = _hzGlobal_Timezones[n] ; break ; } } if (tz.code) { for (; IsAlpha(*zi) ; zi++) ; continue ; } } return 0; } if (*zi == CHAR_PLUS || *zi == CHAR_MINUS) { zi++ ; numBuf[0]= *zi ; zi++ ; numBuf[1]= *zi ; zi++ ; numBuf[2]= *zi ; zi++ ; numBuf[3]= *zi ; if (IsDigit(numBuf[0])&& IsDigit(numBuf[1])&& IsDigit(numBuf[2])&& IsDigit(numBuf[3])) { hOset = ((numBuf[0]- ''0'')*10)+(numBuf[1]- ''0''); mOset = ((numBuf[2]- ''0'')*10)+(numBuf[3]- ''0''); if (hOset > 23||mOset > 59) return 0; zi++ ; continue ; } return 0; } } if (date.SetDate(Y, M, D) != E_OK) return 0; if (date.SetTime(h, m, s) != E_OK) return 0; ci = zi ; return len ; }