List of usage examples for org.joda.time DateTimeZone nextTransition
public abstract long nextTransition(long instant);
From source file:nodatime.jodadump.JodaDump.java
License:Open Source License
private static void dumpZone(String id, DateTimeZone zone) { // TODO: Reinstate this when Noda Time understands aliases better. // See issue 32 for more details. // if (!id.equals(zone.getID())) { // System.out.println(id + " == " + zone.getID()); // System.out.println(); // return; // }//from w w w. j ava2s. c o m System.out.println(id); long now = START.getMillis(); while (now < END.getMillis()) { int standardOffset = zone.getStandardOffset(now); int wallOffset = zone.getOffset(now); System.out.printf("%s %s %s%n", INSTANT_FORMAT.print(now), printOffset(standardOffset), printOffset(wallOffset - standardOffset)); // TODO: Output the name when we've got parity in handling // of auto-addition for summer/winter in Noda Time. long next = zone.nextTransition(now); if (next <= now) { break; } now = next; } System.out.println(); }
From source file:org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramAggregationBuilder.java
License:Apache License
DateTimeZone rewriteTimeZone(QueryShardContext context) throws IOException { final DateTimeZone tz = timeZone(); if (field() != null && tz != null && tz.isFixed() == false && field() != null && script() == null) { final MappedFieldType ft = context.fieldMapper(field()); final IndexReader reader = context.getIndexReader(); if (ft != null && reader != null) { Long anyInstant = null; final IndexNumericFieldData fieldData = context.getForField(ft); for (LeafReaderContext ctx : reader.leaves()) { AtomicNumericFieldData leafFD = fieldData.load(ctx); SortedNumericDocValues values = leafFD.getLongValues(); if (values.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) { anyInstant = values.nextValue(); break; }// ww w . j a v a 2 s . c om } if (anyInstant != null) { final long prevTransition = tz.previousTransition(anyInstant); final long nextTransition = tz.nextTransition(anyInstant); // We need all not only values but also rounded values to be within // [prevTransition, nextTransition]. final long low; DateTimeUnit intervalAsUnit = getIntervalAsDateTimeUnit(); if (intervalAsUnit != null) { final DateTimeField dateTimeField = intervalAsUnit.field(tz); low = dateTimeField.roundCeiling(prevTransition); } else { final TimeValue intervalAsMillis = getIntervalAsTimeValue(); low = Math.addExact(prevTransition, intervalAsMillis.millis()); } // rounding rounds down, so 'nextTransition' is a good upper bound final long high = nextTransition; if (ft.isFieldWithinQuery(reader, low, high, true, false, DateTimeZone.UTC, EPOCH_MILLIS_PARSER, context) == Relation.WITHIN) { // All values in this reader have the same offset despite daylight saving times. // This is very common for location-based timezones such as Europe/Paris in // combination with time-based indices. return DateTimeZone.forOffsetMillis(tz.getOffset(anyInstant)); } } } } return tz; }
From source file:org.nodatime.tzvalidate.JodaDump.java
License:Open Source License
@Override public ZoneTransitions getTransitions(String id, int fromYear, int toYear) { DateTimeZone zone = zones.get(id); // Note that the ID we fetched isn't always the same as DateTimeZone.getID() DateTimeFormatter nameFormatter = DateTimeFormat.forPattern("zz").withZone(zone); Instant start = new DateTime(fromYear, 1, 1, 0, 0, DateTimeZone.UTC).toInstant(); Instant end = new DateTime(toYear, 1, 1, 0, 0, DateTimeZone.UTC).toInstant(); ZoneTransitions transitions = new ZoneTransitions(id); long now = start.getMillis(); transitions.addTransition(null, zone.getOffset(now), !zone.isStandardOffset(now), nameFormatter.print(now)); now = zone.nextTransition(now); if (now == start.getMillis()) { return transitions; }//from w ww .ja v a2 s .c om while (now < end.getMillis()) { transitions.addTransition(new Date(now), zone.getOffset(now), !zone.isStandardOffset(now), nameFormatter.print(now)); long next = zone.nextTransition(now); if (next <= now) { break; } now = next; } return transitions; }
From source file:org.obm.push.protocol.data.TimeZoneConverterImpl.java
License:Open Source License
private ASSystemTime standardDate(TimeZone timeZone) { DateTimeZone dateTimeZone = DateTimeZone.forTimeZone(timeZone); DateMidnight dateMidnight = new DateMidnight(DateTimeUtils.getInstantMillis(null), dateTimeZone); long firstDSTTransitionInstant = dateTimeZone.nextTransition(dateMidnight.getMillis()); long secondDSTTransitionInstant = dateTimeZone.nextTransition(firstDSTTransitionInstant); if (firstDSTTransitionInstant == secondDSTTransitionInstant) { return systemTimeFromInstant(0, DateTimeZone.UTC); }// ww w . ja v a2s . c om if (dateTimeZone.isStandardOffset(firstDSTTransitionInstant)) { return systemTimeFromInstant(firstDSTTransitionInstant, dateTimeZone); } return systemTimeFromInstant(secondDSTTransitionInstant, dateTimeZone); }
From source file:org.obm.push.protocol.data.TimeZoneConverterImpl.java
License:Open Source License
private ASSystemTime dayLightDate(TimeZone timeZone) { DateTimeZone dateTimeZone = DateTimeZone.forTimeZone(timeZone); DateMidnight dateMidnight = new DateMidnight(DateTimeUtils.getInstantMillis(null), dateTimeZone); long firstDSTTransitionInstant = dateTimeZone.nextTransition(dateMidnight.getMillis()); long secondDSTTransitionInstant = dateTimeZone.nextTransition(firstDSTTransitionInstant); if (firstDSTTransitionInstant == secondDSTTransitionInstant) { return systemTimeFromInstant(0, DateTimeZone.UTC); }/*from w ww .ja v a2 s .c om*/ if (dateTimeZone.isStandardOffset(firstDSTTransitionInstant)) { return systemTimeFromInstant(secondDSTTransitionInstant, dateTimeZone); } return systemTimeFromInstant(firstDSTTransitionInstant, dateTimeZone); }
From source file:org.teavm.classlib.impl.tz.ZoneInfoCompiler.java
License:Apache License
/** * @return false if error.//from w w w . j a v a 2 s .com */ static boolean test(String id, DateTimeZone tz) { if (!id.equals(tz.getID())) { return true; } // Test to ensure that reported transitions are not duplicated. long millis = ISOChronology.getInstanceUTC().year().set(0, 1850); long end = ISOChronology.getInstanceUTC().year().set(0, 2050); int offset = tz.getOffset(millis); List<Long> transitions = new ArrayList<>(); while (true) { long next = tz.nextTransition(millis); if (next == millis || next > end) { break; } millis = next; int nextOffset = tz.getOffset(millis); if (offset == nextOffset) { System.out.println( "*d* Error in " + tz.getID() + " " + new DateTime(millis, ISOChronology.getInstanceUTC())); return false; } transitions.add(Long.valueOf(millis)); offset = nextOffset; } // Now verify that reverse transitions match up. millis = ISOChronology.getInstanceUTC().year().set(0, 2050); end = ISOChronology.getInstanceUTC().year().set(0, 1850); for (int i = transitions.size(); --i >= 0;) { long prev = tz.previousTransition(millis); if (prev == millis || prev < end) { break; } millis = prev; long trans = transitions.get(i).longValue(); if (trans - 1 != millis) { System.out.println( "*r* Error in " + tz.getID() + " " + new DateTime(millis, ISOChronology.getInstanceUTC()) + " != " + new DateTime(trans - 1, ISOChronology.getInstanceUTC())); return false; } } return true; }
From source file:org.thelq.pircbotx.commands.NewYearsCommand.java
License:Open Source License
public static String getUTCOffset(DateTimeZone tz) { long millis = System.currentTimeMillis(); while (tz.getOffset(millis) != tz.getStandardOffset(millis)) { long next = tz.nextTransition(millis); if (next == millis) break; millis = next;//from ww w .j av a2 s .com } return "UTC" + FORMATTER_TZOFFSET.withZone(tz).print(millis); }
From source file:org.unitime.timetable.server.ServerTimeZoneBackend.java
License:Open Source License
@Override public ServerTimeZoneResponse execute(ServerTimeZoneRequest request, SessionContext context) { Date first = null, last = null; for (Session session : SessionDAO.getInstance().findAll()) { if (first == null || first.after(session.getEventBeginDate())) first = session.getEventBeginDate(); if (last == null || last.before(session.getEventEndDate())) last = session.getEventEndDate(); }//from w w w . j av a2 s .c om DateTimeZone zone = DateTimeZone.getDefault(); int offsetInMinutes = zone.getOffset(first.getTime()) / 60000; ServerTimeZoneResponse ret = new ServerTimeZoneResponse(); ret.setId(zone.getID()); ret.addName(zone.getName(new Date().getTime())); ret.setTimeZoneOffsetInMinutes(offsetInMinutes); long time = first.getTime(); long transition; while (time != (transition = zone.nextTransition(time)) && time < last.getTime()) { int adjustment = (zone.getOffset(transition) / 60000) - offsetInMinutes; ret.addTransition((int) (transition / 3600000), adjustment); time = transition; } return ret; }