/** * {@inheritDoc} * * @stable ICU 3.8 */ @Override public boolean useDaylightTime() { // Note: This implementation returns true when // daylight saving time is used as of now or // after the next transition. long now = System.currentTimeMillis(); int[] offsets = new int[2]; getOffset(now, false, offsets); if (offsets[1] != 0) { return true; } // If DST is not used now, check if DST is used after the next transition TimeZoneTransition tt = getNextTransition(now, false); if (tt != null && tt.getTo().getDSTSavings() != 0) { return true; } return false; }
TimeZoneRule toRule = tt.getTo(); if (toRule.getDSTSavings() != 0) { return true;
private static long getTransitionTime(TimeZoneTransition tzt, boolean local, int NonExistingTimeOpt, int DuplicatedTimeOpt) { long time = tzt.getTime(); if (local) { time += getLocalDelta(tzt.getFrom().getRawOffset(), tzt.getFrom().getDSTSavings(), tzt.getTo().getRawOffset(), tzt.getTo().getDSTSavings(), NonExistingTimeOpt, DuplicatedTimeOpt); } return time; }
&& tr1.getTime() <= end && (tr1.getFrom().getRawOffset() + tr1.getFrom().getDSTSavings() == tr1.getTo().getRawOffset() + tr1.getTo().getDSTSavings()) && (tr1.getFrom().getDSTSavings() != 0 && tr1.getTo().getDSTSavings() != 0)) { tr1 = getNextTransition(tr1.getTime(), false); } else { && tr2.getTime() <= end && (tr2.getFrom().getRawOffset() + tr2.getFrom().getDSTSavings() == tr2.getTo().getRawOffset() + tr2.getTo().getDSTSavings()) && (tr2.getFrom().getDSTSavings() != 0 && tr2.getTo().getDSTSavings() != 0)) { tr2 = ((BasicTimeZone)tz).getNextTransition(tr2.getTime(), false); } else { if (tr1.getTo().getRawOffset() + tr1.getTo().getDSTSavings() != tr2.getTo().getRawOffset() + tr2.getTo().getDSTSavings() || tr1.getTo().getDSTSavings() != 0 && tr2.getTo().getDSTSavings() == 0 || tr1.getTo().getDSTSavings() == 0 && tr2.getTo().getDSTSavings() != 0) { return false; if (tr1.getTo().getRawOffset() != tr2.getTo().getRawOffset() || tr1.getTo().getDSTSavings() != tr2.getTo().getDSTSavings()) { return false;
TimeZoneRule initial = new InitialTimeZoneRule(tzt.getTo().getName(), tzt.getTo().getRawOffset(), tzt.getTo().getDSTSavings()); filteredRules.add(initial); isProcessed.set(0); TimeZoneRule toRule = tzt.getTo(); int ruleIdx = 1; for (; ruleIdx < all.length; ruleIdx++) { break; if (tzt.getTo().equals(tar)) { break;
TimeZoneRule to = result.getTo(); if (from.getRawOffset() == to.getRawOffset() && from.getDSTSavings() == to.getDSTSavings()) {
String name = tzt.getTo().getName(); boolean isDst = (tzt.getTo().getDSTSavings() != 0); int fromOffset = tzt.getFrom().getRawOffset() + tzt.getFrom().getDSTSavings(); int fromDSTSavings = tzt.getFrom().getDSTSavings(); int toOffset = tzt.getTo().getRawOffset() + tzt.getTo().getDSTSavings(); Grego.timeToFields(tzt.getTime() + fromOffset, dtfields); int weekInMonth = Grego.getDayOfWeekInMonth(dtfields[0], dtfields[1], dtfields[2]); boolean sameRule = false; if (isDst) { if (finalDstRule == null && tzt.getTo() instanceof AnnualTimeZoneRule) { if (((AnnualTimeZoneRule)tzt.getTo()).getEndYear() == AnnualTimeZoneRule.MAX_YEAR) { finalDstRule = (AnnualTimeZoneRule)tzt.getTo(); if (finalStdRule == null && tzt.getTo() instanceof AnnualTimeZoneRule) { if (((AnnualTimeZoneRule)tzt.getTo()).getEndYear() == AnnualTimeZoneRule.MAX_YEAR) { finalStdRule = (AnnualTimeZoneRule)tzt.getTo();
TimeZoneRule to = result.getTo(); if (from.getRawOffset() == to.getRawOffset() && from.getDSTSavings() == to.getDSTSavings()) {
if (((tr.getFrom().getDSTSavings() == 0 && tr.getTo().getDSTSavings() != 0) || (tr.getFrom().getDSTSavings() != 0 && tr.getTo().getDSTSavings() == 0)) && date + MILLIS_PER_YEAR > nextTransitionTime) { annualRules = new AnnualTimeZoneRule[2]; annualRules[0] = new AnnualTimeZoneRule(tr.getTo().getName(), initialRaw, tr.getTo().getDSTSavings(), dtr, dtfields[0], AnnualTimeZoneRule.MAX_YEAR); if (tr.getTo().getRawOffset() == initialRaw) { if (((tr.getFrom().getDSTSavings() == 0 && tr.getTo().getDSTSavings() != 0) || (tr.getFrom().getDSTSavings() != 0 && tr.getTo().getDSTSavings() == 0)) && nextTransitionTime + MILLIS_PER_YEAR > tr.getTime()) { dtr = new DateTimeRule(dtfields[1], weekInMonth, dtfields[3], dtfields[5], DateTimeRule.WALL_TIME); secondRule = new AnnualTimeZoneRule(tr.getTo().getName(), tr.getTo().getRawOffset(), tr.getTo().getDSTSavings(), dtr, dtfields[0] - 1, AnnualTimeZoneRule.MAX_YEAR); tr.getFrom().getDSTSavings(), true); if (d != null && d.getTime() <= date && initialRaw == tr.getTo().getRawOffset() && initialDst == tr.getTo().getDSTSavings()) { if ((tr.getFrom().getDSTSavings() == 0 && tr.getTo().getDSTSavings() != 0) || (tr.getFrom().getDSTSavings() != 0
if (after != null && (after.getTime() - date < DST_CHECK_RANGE) && after.getTo().getDSTSavings() != 0) { useStandard = false;
firstFinalRule = tzt.getTo(); startTime = tzt.getTime(); } else {
afterSav = afterTrs.getTo().getDSTSavings(); if (afterSav != 0) { break;