506 #else 507 double utcOffset = calculateUTCOffset(); 508 double dstOffset = calculateDSTOffset(localTime, utcOffset); 509 return LocalTimeOffset(dstOffset, utcOffset + dstOffset); 510 #endif 511 } 512 513 void initializeDates() 514 { 515 #if !ASSERT_DISABLED 516 static bool alreadyInitialized; 517 ASSERT(!alreadyInitialized); 518 alreadyInitialized = true; 519 #endif 520 521 equivalentYearForDST(2000); // Need to call once to initialize a static used in this function. 522 } 523 524 static inline double ymdhmsToSeconds(int year, long mon, long day, long hour, long minute, double second) 525 { 526 double days = (day - 32075) 527 + floor(1461 * (year + 4800.0 + (mon - 14) / 12) / 4) 528 + 367 * (mon - 2 - (mon - 14) / 12 * 12) / 12 529 - floor(3 * ((year + 4900.0 + (mon - 14) / 12) / 100) / 4) 530 - 2440588; 531 return ((days * hoursPerDay + hour) * minutesPerHour + minute) * secondsPerMinute + second; 532 } 533 534 // We follow the recommendation of RFC 2822 to consider all 535 // obsolete time zones not listed here equivalent to "-0000". 536 static const struct KnownZone { 537 #if !OS(WINDOWS) 538 const 539 #endif 540 char tzName[4]; 541 int tzOffset; 542 } known_zones[] = { 543 { "UT", 0 }, 544 { "GMT", 0 }, 545 { "EST", -300 }, 546 { "EDT", -240 }, 547 { "CST", -360 }, 548 { "CDT", -300 }, 549 { "MST", -420 }, 550 { "MDT", -360 }, 551 { "PST", -480 }, | 506 #else 507 double utcOffset = calculateUTCOffset(); 508 double dstOffset = calculateDSTOffset(localTime, utcOffset); 509 return LocalTimeOffset(dstOffset, utcOffset + dstOffset); 510 #endif 511 } 512 513 void initializeDates() 514 { 515 #if !ASSERT_DISABLED 516 static bool alreadyInitialized; 517 ASSERT(!alreadyInitialized); 518 alreadyInitialized = true; 519 #endif 520 521 equivalentYearForDST(2000); // Need to call once to initialize a static used in this function. 522 } 523 524 static inline double ymdhmsToSeconds(int year, long mon, long day, long hour, long minute, double second) 525 { 526 int mday = firstDayOfMonth[isLeapYear(year)][mon - 1]; 527 double ydays = daysFrom1970ToYear(year); 528 529 return (second + minute * secondsPerMinute + hour * secondsPerHour + (mday + day - 1 + ydays) * secondsPerDay); 530 } 531 532 // We follow the recommendation of RFC 2822 to consider all 533 // obsolete time zones not listed here equivalent to "-0000". 534 static const struct KnownZone { 535 #if !OS(WINDOWS) 536 const 537 #endif 538 char tzName[4]; 539 int tzOffset; 540 } known_zones[] = { 541 { "UT", 0 }, 542 { "GMT", 0 }, 543 { "EST", -300 }, 544 { "EDT", -240 }, 545 { "CST", -360 }, 546 { "CDT", -300 }, 547 { "MST", -420 }, 548 { "MDT", -360 }, 549 { "PST", -480 }, |