Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Attempt to fix date/time calculations for days earlier than 0400-03-01. See forum thread eaa0a09786c6368b. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | ancient-date-fix |
Files: | files | file ages | folders |
SHA3-256: |
00cae11fffaf50e2133915e851d41098 |
User & Date: | drh 2024-08-19 12:54:12 |
Context
2024-08-19
| ||
13:53 | New date/time test cases to validate ancient dates. (Closed-Leaf check-in: 82719074 user: drh tags: ancient-date-fix) | |
12:54 | Attempt to fix date/time calculations for days earlier than 0400-03-01. See forum thread eaa0a09786c6368b. (check-in: 00cae11f user: drh tags: ancient-date-fix) | |
2024-08-18
| ||
09:53 | Automatically disable directory fsync when compiling for AIX. (check-in: 8d170e07 user: drh tags: trunk) | |
Changes
Changes to src/date.c.
︙ | ︙ | |||
267 268 269 270 271 272 273 | datetimeError(p); return; } if( M<=2 ){ Y--; M += 12; } | | | | 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 | datetimeError(p); return; } if( M<=2 ){ Y--; M += 12; } A = (Y+4800)/100; B = 38 - A + (A/4); X1 = 36525*(Y+4716)/100; X2 = 306001*(M+1)/10000; p->iJD = (sqlite3_int64)((X1 + X2 + D + B - 1524.5 ) * 86400000); p->validJD = 1; if( p->validHMS ){ p->iJD += p->h*3600000 + p->m*60000 + (sqlite3_int64)(p->s*1000 + 0.5); if( p->tz ){ |
︙ | ︙ | |||
452 453 454 455 456 457 458 | return iJD>=0 && iJD<=INT_464269060799999; } /* ** Compute the Year, Month, and Day from the julian day number. */ static void computeYMD(DateTime *p){ | | | | | 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 | return iJD>=0 && iJD<=INT_464269060799999; } /* ** Compute the Year, Month, and Day from the julian day number. */ static void computeYMD(DateTime *p){ int Z, alpha, A, B, C, D, E, X1; if( p->validYMD ) return; if( !p->validJD ){ p->Y = 2000; p->M = 1; p->D = 1; }else if( !validJulianDay(p->iJD) ){ datetimeError(p); return; }else{ Z = (int)((p->iJD + 43200000)/86400000); alpha = (int)((Z + 32044.75)/36524.25) - 52; A = Z + 1 + alpha - ((alpha+100)/4) + 25; B = A + 1524; C = (int)((B - 122.1)/365.25); D = (36525*(C&32767))/100; E = (int)((B-D)/30.6001); X1 = (int)(30.6001*E); p->D = B - D - X1; p->M = E<14 ? E-1 : E-13; |
︙ | ︙ |