protected void withStandardFields() { if (base.isSupported(DateTimeFieldType.dayOfWeek())) { base = JodaTimeUtils.resolveDowToDay(base); } else if (base.isSupported(DateTimeFieldType.monthOfYear()) && base.isSupported(DateTimeFieldType.dayOfMonth())) { if (base.isSupported(DateTimeFieldType.weekOfWeekyear())) { base = base.without(DateTimeFieldType.weekOfWeekyear()); } if (base.isSupported(DateTimeFieldType.dayOfWeek())) { base = base.without(DateTimeFieldType.dayOfWeek()); } } }
public static Partial resolveWeek(Partial p) { // Figure out week if (p.isSupported(DateTimeFieldType.dayOfMonth()) && p.isSupported(DateTimeFieldType.monthOfYear()) && p.isSupported(DateTimeFieldType.year())) { Instant t = getInstant(p); // return getPartial(t.toInstant(), p.without(DateTimeFieldType.dayOfMonth()).without(DateTimeFieldType.monthOfYear()).with(DateTimeFieldType.weekOfWeekyear(), 1)); return getPartial(t.toInstant(), p.with(DateTimeFieldType.weekOfWeekyear(), 1)); } else return p; }
public static Partial resolveDowToDay(Partial p1, Partial p2) { // Discard anything that's more specific than dayOfMonth for p2 p2 = JodaTimeUtils.discardMoreSpecificFields(p2, DateTimeFieldType.dayOfMonth()); if (isCompatible(p1,p2)) { if (p1.isSupported(DateTimeFieldType.dayOfWeek())) { if (!p1.isSupported(DateTimeFieldType.dayOfMonth())) { if (p2.isSupported(DateTimeFieldType.dayOfMonth()) && p2.isSupported(DateTimeFieldType.monthOfYear()) && p2.isSupported(DateTimeFieldType.year())) { Instant t2 = getInstant(p2); DateTime t1 = p1.toDateTime(t2); return getPartial(t1.toInstant(), p1.with(DateTimeFieldType.dayOfMonth(), 1)/*.with(DateTimeFieldType.weekOfWeekyear(), 1) */); } } } } return p1; }
public static Partial resolveDowToDay(Partial p) { if (p.isSupported(DateTimeFieldType.dayOfWeek())) { if (!p.isSupported(DateTimeFieldType.dayOfMonth())) { if (p.isSupported(DateTimeFieldType.weekOfWeekyear()) && (p.isSupported(DateTimeFieldType.year()))) { // Convert from year to weekyear (to avoid weirdness when the weekyear and year don't match at the beginning of the year) Partial pwy = withWeekYear(p); Instant t2 = getInstant(pwy); DateTime t1 = pwy.toDateTime(t2); Partial res = getPartial(t1.toInstant(), EMPTY_ISO_PARTIAL); DateTimeFieldType mostSpecific = getMostSpecific(p); res = discardMoreSpecificFields(res, mostSpecific.getDurationType()); return res; } } } return p; }
public static Instant getInstant(Partial p, ZoneId timezone) { if (p == null) return null; int year = p.isSupported(DateTimeFieldType.year())? p.get(DateTimeFieldType.year()):0; if (!p.isSupported(DateTimeFieldType.year())) { if (p.isSupported(DateTimeFieldType.centuryOfEra())) { year += 100*p.get(DateTimeFieldType.centuryOfEra()); } if (p.isSupported(DateTimeFieldType.yearOfCentury())) { year += p.get(DateTimeFieldType.yearOfCentury()); } else if (p.isSupported(DecadeOfCentury)) { year += 10*p.get(DecadeOfCentury); } } int moy = p.isSupported(DateTimeFieldType.monthOfYear())? p.get(DateTimeFieldType.monthOfYear()):1; if (!p.isSupported(DateTimeFieldType.monthOfYear())) { if (p.isSupported(QuarterOfYear)) { moy += 3*(p.get(QuarterOfYear)-1); } } int dom = p.isSupported(DateTimeFieldType.dayOfMonth())? p.get(DateTimeFieldType.dayOfMonth()):1; int hod = p.isSupported(DateTimeFieldType.hourOfDay())? p.get(DateTimeFieldType.hourOfDay()):0; int moh = p.isSupported(DateTimeFieldType.minuteOfHour())? p.get(DateTimeFieldType.minuteOfHour()):0; int som = p.isSupported(DateTimeFieldType.secondOfMinute())? p.get(DateTimeFieldType.secondOfMinute()):0; int msos = p.isSupported(DateTimeFieldType.millisOfSecond())? p.get(DateTimeFieldType.millisOfSecond()):0; return new DateTime(year, moy, dom, hod, moh, som, msos, fromTimezone(timezone)).toInstant(); }
public static Partial resolveWeek(Partial p1, Partial p2) { if (isCompatible(p1,p2)) { if (!p1.isSupported(DateTimeFieldType.dayOfMonth())) { if (p2.isSupported(DateTimeFieldType.dayOfMonth()) && p2.isSupported(DateTimeFieldType.monthOfYear()) && p2.isSupported(DateTimeFieldType.year())) { Instant t2 = getInstant(p2); DateTime t1 = p1.toDateTime(t2); return getPartial(t1.toInstant(), p1.without(DateTimeFieldType.dayOfMonth()).without(DateTimeFieldType.monthOfYear()).with(DateTimeFieldType.weekOfWeekyear(), 1)); } } } return p1; } public static Partial resolveWeek(Partial p)
public static Partial discardMoreSpecificFields(Partial p, DateTimeFieldType d) { Partial res = new Partial(); for (int i = 0; i < p.size(); i++) { DateTimeFieldType fieldType = p.getFieldType(i); if (fieldType.equals(d) || isMoreGeneral(fieldType, d, p.getChronology())) { res = res.with(fieldType, p.getValue(i)); } } if (res.isSupported(JodaTimeUtils.DecadeOfCentury) && !res.isSupported(DateTimeFieldType.centuryOfEra())) { if (p.isSupported(DateTimeFieldType.year())) { res = res.with(DateTimeFieldType.centuryOfEra(), p.get(DateTimeFieldType.year()) / 100); } } return res; }
mgf = DateTimeFieldType.halfdayOfDay(); Partial p = (base != null) ? JodaTimeUtils.combineMoreGeneralFields(base, partialRef, mgf) : partialRef; if (p.isSupported(DateTimeFieldType.dayOfWeek())) { p = JodaTimeUtils.resolveDowToDay(p, partialRef); } else if (dow != null) {
DateTimeFieldType fieldType = p2.getFieldType(i); if (fieldType == DateTimeFieldType.year()) { if (p.isSupported(DateTimeFieldType.yearOfCentury())) { if (!p.isSupported(DateTimeFieldType.centuryOfEra())) { int yoc = p.get(DateTimeFieldType.yearOfCentury()); int refYear = p2.getValue(i); } else if (p.isSupported(JodaTimeUtils.DecadeOfCentury)) { if (!p.isSupported(DateTimeFieldType.centuryOfEra())) { int decade = p.get(JodaTimeUtils.DecadeOfCentury); int refYear = p2.getValue(i); if (!p.isSupported(fieldType)) { p = p.with(fieldType, p2.getValue(i)); if (!p.isSupported(DateTimeFieldType.year())) { if (p.isSupported(DateTimeFieldType.yearOfCentury()) && p.isSupported(DateTimeFieldType.centuryOfEra())) { int year = p.get(DateTimeFieldType.yearOfCentury()) + p.get(DateTimeFieldType.centuryOfEra())*100; p = p.with(DateTimeFieldType.year(), year);
DateTimeFieldType fieldType = p2.getFieldType(i); if (fieldType == DateTimeFieldType.year()) { if (p.isSupported(DateTimeFieldType.yearOfCentury())) { if (!p.isSupported(DateTimeFieldType.centuryOfEra())) { int yoc = p.get(DateTimeFieldType.yearOfCentury()); int refYear = p2.getValue(i); } else if (p.isSupported(DateTimeFieldType.centuryOfEra())) { continue; if (p.isSupported(DateTimeFieldType.year())) { continue; if (p.isSupported(DateTimeFieldType.year())) { continue; if (!p.isSupported(fieldType)) { p = p.with(fieldType, p2.getValue(i)); if (!p.isSupported(DateTimeFieldType.year())) { if (p.isSupported(DateTimeFieldType.yearOfCentury()) && p.isSupported(DateTimeFieldType.centuryOfEra())) { int year = p.get(DateTimeFieldType.yearOfCentury()) + p.get(DateTimeFieldType.centuryOfEra())*100; p = p.with(DateTimeFieldType.year(), year); if (p.isSupported(DateTimeFieldType.halfdayOfDay())) { int hour = -1; if (p.isSupported(DateTimeFieldType.hourOfHalfday())) { hour = p.get(DateTimeFieldType.hourOfHalfday()); p = p.without(DateTimeFieldType.hourOfHalfday());
if (isMoreGeneral(msf, DateTimeFieldType.year(), p.getChronology()) || isMoreGeneral(msf, DateTimeFieldType.yearOfCentury(), p.getChronology())) { if (p.isSupported(DateTimeFieldType.yearOfCentury())) { if (p.isSupported(JodaTimeUtils.DecadeOfCentury)) { if (p.isSupported(DateTimeFieldType.centuryOfEra())) { int year = p.get(DateTimeFieldType.centuryOfEra()) * 100 + p.get(JodaTimeUtils.DecadeOfCentury)*10; p = p.without(JodaTimeUtils.DecadeOfCentury); if (p.isSupported(DateTimeFieldType.centuryOfEra())) { int year = p.get(DateTimeFieldType.centuryOfEra()) * 100; p = p.without(DateTimeFieldType.centuryOfEra()); if (p.isSupported(DateTimeFieldType.weekOfWeekyear())) { if (!p.isSupported(DateTimeFieldType.dayOfMonth()) && !p.isSupported(DateTimeFieldType.dayOfWeek())) { p = p.with(DateTimeFieldType.dayOfWeek(), 1); if (p.isSupported(DateTimeFieldType.monthOfYear())) { p = p.without(DateTimeFieldType.monthOfYear()); DateTimeFieldType fieldType = p2.getFieldType(i); if (msf == null || isMoreSpecific(fieldType, msf, p.getChronology())) { if (!p.isSupported(fieldType)) { if (fieldType == DateTimeFieldType.monthOfYear()) { if (p.isSupported(QuarterOfYear)) { p = p.with(DateTimeFieldType.monthOfYear(), (p.get(QuarterOfYear)-1)*3+1); continue; } else if (p.isSupported(HalfYearOfYear)) { p = p.with(DateTimeFieldType.monthOfYear(), (p.get(HalfYearOfYear)-1)*6+1); continue;
Time t = null; for (DateTimeFieldType dtft : dtFieldTypes) { if (p.isSupported(dtft)) { t = new PartialTime(JodaTimeUtils.discardMoreSpecificFields(p, dtft));
protected void withStandardFields() { if (base.isSupported(DateTimeFieldType.dayOfWeek())) { base = JodaTimeUtils.resolveDowToDay(base); } else if (base.isSupported(DateTimeFieldType.monthOfYear()) && base.isSupported(DateTimeFieldType.dayOfMonth())) { if (base.isSupported(DateTimeFieldType.weekOfWeekyear())) { base = base.without(DateTimeFieldType.weekOfWeekyear()); } if (base.isSupported(DateTimeFieldType.dayOfWeek())) { base = base.without(DateTimeFieldType.dayOfWeek()); } } }
protected void withStandardFields() { if (base.isSupported(DateTimeFieldType.dayOfWeek())) { base = JodaTimeUtils.resolveDowToDay(base); } else if (base.isSupported(DateTimeFieldType.monthOfYear()) && base.isSupported(DateTimeFieldType.dayOfMonth())) { if (base.isSupported(DateTimeFieldType.weekOfWeekyear())) { base = base.without(DateTimeFieldType.weekOfWeekyear()); } if (base.isSupported(DateTimeFieldType.dayOfWeek())) { base = base.without(DateTimeFieldType.dayOfWeek()); } } }
protected void withStandardFields() { if (base.isSupported(DateTimeFieldType.dayOfWeek())) { base = JodaTimeUtils.resolveDowToDay(base); } else if (base.isSupported(DateTimeFieldType.monthOfYear()) && base.isSupported(DateTimeFieldType.dayOfMonth())) { if (base.isSupported(DateTimeFieldType.weekOfWeekyear())) { base = base.without(DateTimeFieldType.weekOfWeekyear()); } if (base.isSupported(DateTimeFieldType.dayOfWeek())) { base = base.without(DateTimeFieldType.dayOfWeek()); } } }
public static Partial resolveWeek(Partial p) { // Figure out week if (p.isSupported(DateTimeFieldType.dayOfMonth()) && p.isSupported(DateTimeFieldType.monthOfYear()) && p.isSupported(DateTimeFieldType.year())) { Instant t = getInstant(p); // return getPartial(t.toInstant(), p.without(DateTimeFieldType.dayOfMonth()).without(DateTimeFieldType.monthOfYear()).with(DateTimeFieldType.weekOfWeekyear(), 1)); return getPartial(t.toInstant(), p.with(DateTimeFieldType.weekOfWeekyear(), 1)); } else return p; }
public static Partial resolveWeek(Partial p) { // Figure out week if (p.isSupported(DateTimeFieldType.dayOfMonth()) && p.isSupported(DateTimeFieldType.monthOfYear()) && p.isSupported(DateTimeFieldType.year())) { Instant t = getInstant(p); // return getPartial(t.toInstant(), p.without(DateTimeFieldType.dayOfMonth()).without(DateTimeFieldType.monthOfYear()).with(DateTimeFieldType.weekOfWeekyear(), 1)); return getPartial(t.toInstant(), p.with(DateTimeFieldType.weekOfWeekyear(), 1)); } else return p; }
public static Partial resolveWeek(Partial p1, Partial p2) { if (isCompatible(p1,p2)) { if (!p1.isSupported(DateTimeFieldType.dayOfMonth())) { if (p2.isSupported(DateTimeFieldType.dayOfMonth()) && p2.isSupported(DateTimeFieldType.monthOfYear()) && p2.isSupported(DateTimeFieldType.year())) { Instant t2 = getInstant(p2); DateTime t1 = p1.toDateTime(t2); return getPartial(t1.toInstant(), p1.without(DateTimeFieldType.dayOfMonth()).without(DateTimeFieldType.monthOfYear()).with(DateTimeFieldType.weekOfWeekyear(), 1)); } } } return p1; } public static Partial resolveWeek(Partial p)
public static Partial resolveWeek(Partial p1, Partial p2) { if (isCompatible(p1,p2)) { if (!p1.isSupported(DateTimeFieldType.dayOfMonth())) { if (p2.isSupported(DateTimeFieldType.dayOfMonth()) && p2.isSupported(DateTimeFieldType.monthOfYear()) && p2.isSupported(DateTimeFieldType.year())) { Instant t2 = getInstant(p2); DateTime t1 = p1.toDateTime(t2); return getPartial(t1.toInstant(), p1.without(DateTimeFieldType.dayOfMonth()).without(DateTimeFieldType.monthOfYear()).with(DateTimeFieldType.weekOfWeekyear(), 1)); } } } return p1; } public static Partial resolveWeek(Partial p)
public static Partial resolveWeek(Partial p1, Partial p2) { if (isCompatible(p1,p2)) { if (!p1.isSupported(DateTimeFieldType.dayOfMonth())) { if (p2.isSupported(DateTimeFieldType.dayOfMonth()) && p2.isSupported(DateTimeFieldType.monthOfYear()) && p2.isSupported(DateTimeFieldType.year())) { Instant t2 = getInstant(p2); DateTime t1 = p1.toDateTime(t2); return getPartial(t1.toInstant(), p1.without(DateTimeFieldType.dayOfMonth()).without(DateTimeFieldType.monthOfYear()).with(DateTimeFieldType.weekOfWeekyear(), 1)); } } } return p1; } public static Instant getInstant(Partial p)