Lines Matching refs:p

164 static int parseTimezone(const char *zDate, DateTime *p){  in parseTimezone()  argument
169 p->tz = 0; in parseTimezone()
186 p->tz = sgn*(nMn + nHr*60); in parseTimezone()
189 p->tzSet = 1; in parseTimezone()
200 static int parseHhMmSs(const char *zDate, DateTime *p){ in parseHhMmSs() argument
226 p->validJD = 0; in parseHhMmSs()
227 p->rawS = 0; in parseHhMmSs()
228 p->validHMS = 1; in parseHhMmSs()
229 p->h = h; in parseHhMmSs()
230 p->m = m; in parseHhMmSs()
231 p->s = s + ms; in parseHhMmSs()
232 if( parseTimezone(zDate, p) ) return 1; in parseHhMmSs()
233 p->validTZ = (p->tz!=0)?1:0; in parseHhMmSs()
240 static void datetimeError(DateTime *p){ in datetimeError() argument
241 memset(p, 0, sizeof(*p)); in datetimeError()
242 p->isError = 1; in datetimeError()
251 static void computeJD(DateTime *p){ in computeJD() argument
254 if( p->validJD ) return; in computeJD()
255 if( p->validYMD ){ in computeJD()
256 Y = p->Y; in computeJD()
257 M = p->M; in computeJD()
258 D = p->D; in computeJD()
264 if( Y<-4713 || Y>9999 || p->rawS ){ in computeJD()
265 datetimeError(p); in computeJD()
276 p->iJD = (sqlite3_int64)((X1 + X2 + D + B - 1524.5 ) * 86400000); in computeJD()
277 p->validJD = 1; in computeJD()
278 if( p->validHMS ){ in computeJD()
279 p->iJD += p->h*3600000 + p->m*60000 + (sqlite3_int64)(p->s*1000 + 0.5); in computeJD()
280 if( p->validTZ ){ in computeJD()
281 p->iJD -= p->tz*60000; in computeJD()
282 p->validYMD = 0; in computeJD()
283 p->validHMS = 0; in computeJD()
284 p->validTZ = 0; in computeJD()
301 static int parseYyyyMmDd(const char *zDate, DateTime *p){ in parseYyyyMmDd() argument
315 if( parseHhMmSs(zDate, p)==0 ){ in parseYyyyMmDd()
318 p->validHMS = 0; in parseYyyyMmDd()
322 p->validJD = 0; in parseYyyyMmDd()
323 p->validYMD = 1; in parseYyyyMmDd()
324 p->Y = neg ? -Y : Y; in parseYyyyMmDd()
325 p->M = M; in parseYyyyMmDd()
326 p->D = D; in parseYyyyMmDd()
327 if( p->validTZ ){ in parseYyyyMmDd()
328 computeJD(p); in parseYyyyMmDd()
338 static int setDateTimeToCurrent(sqlite3_context *context, DateTime *p){ in setDateTimeToCurrent() argument
339 p->iJD = sqlite3StmtCurrentTime(context); in setDateTimeToCurrent()
340 if( p->iJD>0 ){ in setDateTimeToCurrent()
341 p->validJD = 1; in setDateTimeToCurrent()
354 static void setRawDateNumber(DateTime *p, double r){ in setRawDateNumber() argument
355 p->s = r; in setRawDateNumber()
356 p->rawS = 1; in setRawDateNumber()
358 p->iJD = (sqlite3_int64)(r*86400000.0 + 0.5); in setRawDateNumber()
359 p->validJD = 1; in setRawDateNumber()
382 DateTime *p in parseDateOrTime() argument
385 if( parseYyyyMmDd(zDate,p)==0 ){ in parseDateOrTime()
387 }else if( parseHhMmSs(zDate, p)==0 ){ in parseDateOrTime()
390 return setDateTimeToCurrent(context, p); in parseDateOrTime()
392 setRawDateNumber(p, r); in parseDateOrTime()
419 static void computeYMD(DateTime *p){ in computeYMD() argument
421 if( p->validYMD ) return; in computeYMD()
422 if( !p->validJD ){ in computeYMD()
423 p->Y = 2000; in computeYMD()
424 p->M = 1; in computeYMD()
425 p->D = 1; in computeYMD()
426 }else if( !validJulianDay(p->iJD) ){ in computeYMD()
427 datetimeError(p); in computeYMD()
430 Z = (int)((p->iJD + 43200000)/86400000); in computeYMD()
438 p->D = B - D - X1; in computeYMD()
439 p->M = E<14 ? E-1 : E-13; in computeYMD()
440 p->Y = p->M>2 ? C - 4716 : C - 4715; in computeYMD()
442 p->validYMD = 1; in computeYMD()
448 static void computeHMS(DateTime *p){ in computeHMS() argument
450 if( p->validHMS ) return; in computeHMS()
451 computeJD(p); in computeHMS()
452 s = (int)((p->iJD + 43200000) % 86400000); in computeHMS()
453 p->s = s/1000.0; in computeHMS()
454 s = (int)p->s; in computeHMS()
455 p->s -= s; in computeHMS()
456 p->h = s/3600; in computeHMS()
457 s -= p->h*3600; in computeHMS()
458 p->m = s/60; in computeHMS()
459 p->s += s - p->m*60; in computeHMS()
460 p->rawS = 0; in computeHMS()
461 p->validHMS = 1; in computeHMS()
467 static void computeYMD_HMS(DateTime *p){ in computeYMD_HMS() argument
468 computeYMD(p); in computeYMD_HMS()
469 computeHMS(p); in computeYMD_HMS()
475 static void clearYMD_HMS_TZ(DateTime *p){ in clearYMD_HMS_TZ() argument
476 p->validYMD = 0; in clearYMD_HMS_TZ()
477 p->validHMS = 0; in clearYMD_HMS_TZ()
478 p->validTZ = 0; in clearYMD_HMS_TZ()
566 DateTime *p, /* Date at which to calculate offset */ in toLocaltime() argument
576 computeJD(p); in toLocaltime()
577 if( p->iJD<2108667600*(i64)100000 /* 1970-01-01 */ in toLocaltime()
578 || p->iJD>2130141456*(i64)100000 /* 2038-01-18 */ in toLocaltime()
585 DateTime x = *p; in toLocaltime()
594 t = (time_t)(p->iJD/1000 - 21086676*(i64)10000); in toLocaltime()
600 p->Y = sLocal.tm_year + 1900 - iYearDiff; in toLocaltime()
601 p->M = sLocal.tm_mon + 1; in toLocaltime()
602 p->D = sLocal.tm_mday; in toLocaltime()
603 p->h = sLocal.tm_hour; in toLocaltime()
604 p->m = sLocal.tm_min; in toLocaltime()
605 p->s = sLocal.tm_sec + (p->iJD%1000)*0.001; in toLocaltime()
606 p->validYMD = 1; in toLocaltime()
607 p->validHMS = 1; in toLocaltime()
608 p->validJD = 0; in toLocaltime()
609 p->rawS = 0; in toLocaltime()
610 p->validTZ = 0; in toLocaltime()
611 p->isError = 0; in toLocaltime()
666 DateTime *p, /* The date/time value to be modified */ in parseModifier() argument
681 if( !p->rawS || p->validJD ){ in parseModifier()
683 p->rawS = 0; in parseModifier()
684 }else if( p->s>=-21086676*(i64)10000 /* -4713-11-24 12:00:00 */ in parseModifier()
685 && p->s<=(25340230*(i64)10000)+799 /* 9999-12-31 23:59:59 */ in parseModifier()
687 r = p->s*1000.0 + 210866760000000.0; in parseModifier()
688 clearYMD_HMS_TZ(p); in parseModifier()
689 p->iJD = (sqlite3_int64)(r + 0.5); in parseModifier()
690 p->validJD = 1; in parseModifier()
691 p->rawS = 0; in parseModifier()
708 if( p->validJD && p->rawS ){ in parseModifier()
710 p->rawS = 0; in parseModifier()
723 rc = toLocaltime(p, pCtx); in parseModifier()
735 if( sqlite3_stricmp(z, "unixepoch")==0 && p->rawS ){ in parseModifier()
737 r = p->s*1000.0 + 210866760000000.0; in parseModifier()
739 clearYMD_HMS_TZ(p); in parseModifier()
740 p->iJD = (sqlite3_int64)(r + 0.5); in parseModifier()
741 p->validJD = 1; in parseModifier()
742 p->rawS = 0; in parseModifier()
748 if( p->tzSet==0 ){ in parseModifier()
754 computeJD(p); in parseModifier()
755 iGuess = iOrigJD = p->iJD; in parseModifier()
768 memset(p, 0, sizeof(*p)); in parseModifier()
769 p->iJD = iGuess; in parseModifier()
770 p->validJD = 1; in parseModifier()
771 p->tzSet = 1; in parseModifier()
790 computeYMD_HMS(p); in parseModifier()
791 p->validTZ = 0; in parseModifier()
792 p->validJD = 0; in parseModifier()
793 computeJD(p); in parseModifier()
794 Z = ((p->iJD + 129600000)/86400000) % 7; in parseModifier()
796 p->iJD += (n - Z)*86400000; in parseModifier()
797 clearYMD_HMS_TZ(p); in parseModifier()
810 if( !p->validJD && !p->validYMD && !p->validHMS ) break; in parseModifier()
812 computeYMD(p); in parseModifier()
813 p->validHMS = 1; in parseModifier()
814 p->h = p->m = 0; in parseModifier()
815 p->s = 0.0; in parseModifier()
816 p->rawS = 0; in parseModifier()
817 p->validTZ = 0; in parseModifier()
818 p->validJD = 0; in parseModifier()
820 p->D = 1; in parseModifier()
823 p->M = 1; in parseModifier()
824 p->D = 1; in parseModifier()
867 computeJD(p); in parseModifier()
868 clearYMD_HMS_TZ(p); in parseModifier()
869 p->iJD += tx.iJD; in parseModifier()
881 computeJD(p); in parseModifier()
893 computeYMD_HMS(p); in parseModifier()
894 p->M += (int)r; in parseModifier()
895 x = p->M>0 ? (p->M-1)/12 : (p->M-12)/12; in parseModifier()
896 p->Y += x; in parseModifier()
897 p->M -= x*12; in parseModifier()
898 p->validJD = 0; in parseModifier()
905 computeYMD_HMS(p); in parseModifier()
906 p->Y += y; in parseModifier()
907 p->validJD = 0; in parseModifier()
912 computeJD(p); in parseModifier()
913 p->iJD += (sqlite3_int64)(r*1000.0*aXformType[i].rXform + rRounder); in parseModifier()
918 clearYMD_HMS_TZ(p); in parseModifier()
941 DateTime *p in isDate() argument
946 memset(p, 0, sizeof(*p)); in isDate()
949 return setDateTimeToCurrent(context, p); in isDate()
953 setRawDateNumber(p, sqlite3_value_double(argv[0])); in isDate()
956 if( !z || parseDateOrTime(context, (char*)z, p) ){ in isDate()
963 if( z==0 || parseModifier(context, (char*)z, n, p, i) ) return 1; in isDate()
965 computeJD(p); in isDate()
966 if( p->isError || !validJulianDay(p->iJD) ) return 1; in isDate()