Return Type | Function name | Arguments |
---|---|---|
hzEcode | hzXDate::SetDateTime | (const char*,) |
Declared in file: hzDate.h
Defined in file : hzDate.cpp
Function Logic:
Function body:
hzEcode hzXDate::SetDateTime (const char* i) { hzTimezone tz ; 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 n ; uint32_t hOset = 0; uint32_t mOset = 0; char buf [4]; if (!i || !i[0]) { m_hour = 0; m_usec = 0; return E_OK ; } tz.clear() ; n = IsDateTime(Y, M, D, h, m, s, i) ; if (!n) { Y = M = D = 0; for (; *i ;) { if (*i < CHAR_SPACE) break ; if (*i == CHAR_SPACE || *i == CHAR_COMMA || *i == CHAR_PAROPEN || *i == CHAR_PARCLOSE) { len++ ; i++ ; continue ; } if (IsDigit(*i)) { n = IsTime(h, m, s, i) ; if (n) i += n ; else { if (IsPosint(n, i)) { if (n < 32&&D == 0) D = n ; else if (n < 10000&&Y==0)Y= n ; else return E_FORMAT ; for (; IsDigit(*i) ; i++) ; } } } if (IsAlpha(*i)) { if (dow == NULL_DOW) { for (n = 0; n < 7; n++) if (!CstrCompareI(i, hz_daynames_full[n])) { dow = n ; break ; } if (dow == NULL_DOW) { for (n = 0; n < 7; n++) if (!CstrCompareI(i, hz_daynames_abrv[n])) { dow = n ; break ; } } if (dow != 8) { for (; IsAlpha(*i) ; i++) ; continue ; } } if (M == 0) { for (n = 0; n < 12;n++) if (!CstrCompareI(i, hz_monthnames_full[n])) { M = n + 1; break ; } if (M == 0) { for (n = 0; n < 12;n++) if (!CstrCompareI(i, hz_monthnames_abrv[n])) { M = n + 1; break ; } } if (M >&eq; 0) { for (; IsAlpha(*i) ; i++) ; continue ; } } if (!tz.code) { for (n = 0; _hzGlobal_Timezones[n].code ; n++) { if (!CstrCompareI(i, _hzGlobal_Timezones[n].code)) { tz = _hzGlobal_Timezones[n] ; break ; } } if (tz.code) { for (; IsAlpha(*i) ; i++) ; continue ; } } return E_FORMAT ; } if (*i == CHAR_PLUS || *i == CHAR_MINUS) { i++ ; buf[0]= *i ; i++ ; buf[1]= *i ; i++ ; buf[2]= *i ; i++ ; buf[3]= *i ; if (IsDigit(buf[0])&& IsDigit(buf[1])&& IsDigit(buf[2])&& IsDigit(buf[3])) { hOset = ((buf[0]- ''0'')*10)+(buf[1]- ''0''); mOset = ((buf[2]- ''0'')*10)+(buf[3]- ''0''); if (hOset > 23||mOset > 59) return E_FORMAT ; i++ ; continue ; } return E_FORMAT ; } } } if (SetDate(Y, M, D) != E_OK) return E_FORMAT ; if (SetTime(h, m, s) != E_OK) return E_FORMAT ; return E_OK ; }