src/share/classes/sun/util/calendar/ZoneInfoFile.java

Print this page




 568                 dom = endRule.dom;
 569                 dow = endRule.dow;
 570                 if (dow == -1) {
 571                     params[6] = dom;
 572                     params[7] = 0;
 573                 } else {
 574                     // hacking: see comment above
 575                     if (dom < 0 || dom >= 24) {
 576                         params[6] = -1;
 577                         params[7] = toCalendarDOW[dow];
 578                     } else {
 579                         params[6] = dom;
 580                         params[7] = -toCalendarDOW[dow];
 581                     }
 582                 }
 583                 params[8] = endRule.secondOfDay * 1000;
 584                 params[9] = toSTZTime[endRule.timeDefinition];
 585                 dstSavings = (startRule.offsetAfter - startRule.offsetBefore) * 1000;
 586 
 587                 // Note: known mismatching -> Asia/Amman


 588                 // ZoneInfo :      startDayOfWeek=5     <= Thursday
 589                 //                 startTime=86400000   <= 24 hours
 590                 // This:           startDayOfWeek=6
 591                 //                 startTime=0
 592                 // Below is the workaround, it probably slows down everyone a little
 593                 if (params[2] == 6 && params[3] == 0 && zoneId.equals("Asia/Amman")) {



 594                     params[2] = 5;
 595                     params[3] = 86400000;
 596                 }
 597             } else if (nTrans > 0) {  // only do this if there is something in table already
 598                 if (lastyear < LASTYEAR) {
 599                     // ZoneInfo has an ending entry for 2037
 600                     //long trans = OffsetDateTime.of(LASTYEAR, 1, 1, 0, 0, 0, 0,
 601                     //                               ZoneOffset.ofTotalSeconds(rawOffset/1000))
 602                     //                           .toEpochSecond();
 603                     long trans = LDT2037 - rawOffset/1000;
 604 
 605                     int offsetIndex = indexOf(offsets, 0, nOffsets, rawOffset/1000);
 606                     if (offsetIndex == nOffsets)
 607                         nOffsets++;
 608                     transitions[nTrans++] = (trans * 1000) << TRANSITION_NSHIFT |
 609                                        (offsetIndex & OFFSET_MASK);
 610 
 611                 } else if (savingsInstantTransitions.length > 2) {
 612                     // Workaround: create the params based on the last pair for
 613                     // zones like Israel and Iran which have trans defined




 568                 dom = endRule.dom;
 569                 dow = endRule.dow;
 570                 if (dow == -1) {
 571                     params[6] = dom;
 572                     params[7] = 0;
 573                 } else {
 574                     // hacking: see comment above
 575                     if (dom < 0 || dom >= 24) {
 576                         params[6] = -1;
 577                         params[7] = toCalendarDOW[dow];
 578                     } else {
 579                         params[6] = dom;
 580                         params[7] = -toCalendarDOW[dow];
 581                     }
 582                 }
 583                 params[8] = endRule.secondOfDay * 1000;
 584                 params[9] = toSTZTime[endRule.timeDefinition];
 585                 dstSavings = (startRule.offsetAfter - startRule.offsetBefore) * 1000;
 586 
 587                 // Note: known mismatching -> Asia/Amman
 588                 //                            Asia/Gaza
 589                 //                            Asia/Hebron
 590                 // ZoneInfo :      startDayOfWeek=5     <= Thursday
 591                 //                 startTime=86400000   <= 24 hours
 592                 // This:           startDayOfWeek=6
 593                 //                 startTime=0
 594                 // Below is the workaround, it probably slows down everyone a little
 595                 if (params[2] == 6 && params[3] == 0 &&
 596                     (zoneId.equals("Asia/Amman") ||
 597                      zoneId.equals("Asia/Gaza") ||
 598                      zoneId.equals("Asia/Hebron"))) {
 599                     params[2] = 5;
 600                     params[3] = 86400000;
 601                 }
 602             } else if (nTrans > 0) {  // only do this if there is something in table already
 603                 if (lastyear < LASTYEAR) {
 604                     // ZoneInfo has an ending entry for 2037
 605                     //long trans = OffsetDateTime.of(LASTYEAR, 1, 1, 0, 0, 0, 0,
 606                     //                               ZoneOffset.ofTotalSeconds(rawOffset/1000))
 607                     //                           .toEpochSecond();
 608                     long trans = LDT2037 - rawOffset/1000;
 609 
 610                     int offsetIndex = indexOf(offsets, 0, nOffsets, rawOffset/1000);
 611                     if (offsetIndex == nOffsets)
 612                         nOffsets++;
 613                     transitions[nTrans++] = (trans * 1000) << TRANSITION_NSHIFT |
 614                                        (offsetIndex & OFFSET_MASK);
 615 
 616                 } else if (savingsInstantTransitions.length > 2) {
 617                     // Workaround: create the params based on the last pair for
 618                     // zones like Israel and Iran which have trans defined