类org.joda.time.ReadWritablePeriod源码实例Demo

下面列出了怎么用org.joda.time.ReadWritablePeriod的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: presto   文件: DateTimeUtils.java
@Override
public int parseInto(ReadWritablePeriod period, String text, int position, Locale locale)
{
    int bestValidPos = position;
    ReadWritablePeriod bestValidPeriod = null;

    int bestInvalidPos = position;

    for (PeriodParser parser : parsers) {
        ReadWritablePeriod parsedPeriod = new MutablePeriod();
        int parsePos = parser.parseInto(parsedPeriod, text, position, locale);
        if (parsePos >= position) {
            if (parsePos > bestValidPos) {
                bestValidPos = parsePos;
                bestValidPeriod = parsedPeriod;
                if (parsePos >= text.length()) {
                    break;
                }
            }
        }
        else if (parsePos < 0) {
            parsePos = ~parsePos;
            if (parsePos > bestInvalidPos) {
                bestInvalidPos = parsePos;
            }
        }
    }

    if (bestValidPos > position || (bestValidPos == position)) {
        // Restore the state to the best valid parse.
        if (bestValidPeriod != null) {
            period.setPeriod(bestValidPeriod);
        }
        return bestValidPos;
    }

    return ~bestInvalidPos;
}
 
源代码2 项目: warp10-platform   文件: ADDDURATION.java
/**
 * Convert an ISO8601 duration to a Period.
 * @param duration
 * @return
 * @throws WarpScriptException
 */
public static ReadWritablePeriodWithSubSecondOffset durationToPeriod(String duration) throws WarpScriptException {
  // Separate seconds from  digits below second precision
  String[] tokens = UnsafeString.split(duration, '.');

  long offset = 0;
  if (tokens.length > 2) {
    throw new WarpScriptException("Invalid ISO8601 duration");
  }

  if (2 == tokens.length) {
    duration = tokens[0].concat("S");
    String tmp = tokens[1].substring(0, tokens[1].length() - 1);

    try {
      offset = ((Double) (Double.parseDouble("0." + tmp) * Constants.TIME_UNITS_PER_S)).longValue();
    } catch (NumberFormatException e) {
      throw new WarpScriptException("Parsing of sub second precision part of duration has failed. tried to parse: " + tmp);
    }
  }

  ReadWritablePeriod period = new MutablePeriod();
  if (ISOPeriodFormat.standard().getParser().parseInto(period, duration, 0, Locale.US) < 0) {
    throw new WarpScriptException("Parsing of duration without sub second precision has failed. Tried to parse: " + duration);
  }

  return new ReadWritablePeriodWithSubSecondOffset(period, offset);
}
 
源代码3 项目: warp10-platform   文件: ADDDURATION.java
/**
 * Add a duration in ISO8601 duration format to a timestamp
 * @param instant a timestamp since Unix Epoch
 * @param periodAndOffset a period (with subsecond precision) to add
 * @param dtz timezone
 * @param N number of times the period is added
 * @return resulting timestamp
 */
public static long addPeriod(long instant, ReadWritablePeriodWithSubSecondOffset periodAndOffset, DateTimeZone dtz, long N) {

  ReadWritablePeriod period = periodAndOffset.getPeriod();
  long offset = periodAndOffset.getOffset();

  //
  // Do the computation
  //

  DateTime dt = new DateTime(instant / Constants.TIME_UNITS_PER_MS, dtz);

  //
  // Add the duration
  // Note that for performance reasons we add N times ISO8601 duration, then N times the sub seconds offset.
  // This calculation is not exact in some rare edge cases  e.g. in the last second of the 28th february on a year before a leap year if we add 'P1YT0.999999S'.
  //

  long M = N;
  while (M > Integer.MAX_VALUE) {
    dt = dt.withPeriodAdded(period, Integer.MAX_VALUE);
    M = M - Integer.MAX_VALUE;
  }
  while (M < Integer.MIN_VALUE) {
    dt = dt.withPeriodAdded(period, Integer.MIN_VALUE);
    M = M - Integer.MIN_VALUE;
  }
  dt = dt.withPeriodAdded(period, Math.toIntExact(M));

  // check if offset should be positive of negative
  if (period.toPeriod().getSeconds() < 0) {
    offset = -offset;
  }

  long ts = dt.getMillis() * Constants.TIME_UNITS_PER_MS;
  ts += instant % Constants.TIME_UNITS_PER_MS;
  ts += offset * N;

  return ts;
}
 
源代码4 项目: coming   文件: Time_27_PeriodFormatterBuilder_s.java
void setFieldValue(ReadWritablePeriod period, int field, int value) {
    switch (field) {
    default:
        break;
    case YEARS:
        period.setYears(value);
        break;
    case MONTHS:
        period.setMonths(value);
        break;
    case WEEKS:
        period.setWeeks(value);
        break;
    case DAYS:
        period.setDays(value);
        break;
    case HOURS:
        period.setHours(value);
        break;
    case MINUTES:
        period.setMinutes(value);
        break;
    case SECONDS:
        period.setSeconds(value);
        break;
    case MILLIS:
        period.setMillis(value);
        break;
    }
}
 
源代码5 项目: coming   文件: Time_27_PeriodFormatterBuilder_s.java
public int parseInto(
        ReadWritablePeriod period, String periodStr,
        int position, Locale locale) {
    if (periodStr.regionMatches(true, position, iText, 0, iText.length())) {
        return position + iText.length();
    }
    return ~position;
}
 
源代码6 项目: coming   文件: Time_27_PeriodFormatterBuilder_s.java
public int parseInto(
        ReadWritablePeriod period, String periodStr,
        int position, Locale locale) {
    PeriodParser[] parsers = iParsers;
    if (parsers == null) {
        throw new UnsupportedOperationException();
    }

    int len = parsers.length;
    for (int i=0; i<len && position >= 0; i++) {
        position = parsers[i].parseInto(period, periodStr, position, locale);
    }
    return position;
}
 
源代码7 项目: coming   文件: Time_27_PeriodFormatterBuilder_t.java
void setFieldValue(ReadWritablePeriod period, int field, int value) {
    switch (field) {
    default:
        break;
    case YEARS:
        period.setYears(value);
        break;
    case MONTHS:
        period.setMonths(value);
        break;
    case WEEKS:
        period.setWeeks(value);
        break;
    case DAYS:
        period.setDays(value);
        break;
    case HOURS:
        period.setHours(value);
        break;
    case MINUTES:
        period.setMinutes(value);
        break;
    case SECONDS:
        period.setSeconds(value);
        break;
    case MILLIS:
        period.setMillis(value);
        break;
    }
}
 
源代码8 项目: coming   文件: Time_27_PeriodFormatterBuilder_t.java
public int parseInto(
        ReadWritablePeriod period, String periodStr,
        int position, Locale locale) {
    if (periodStr.regionMatches(true, position, iText, 0, iText.length())) {
        return position + iText.length();
    }
    return ~position;
}
 
源代码9 项目: coming   文件: Time_27_PeriodFormatterBuilder_t.java
public int parseInto(
        ReadWritablePeriod period, String periodStr,
        int position, Locale locale) {
    PeriodParser[] parsers = iParsers;
    if (parsers == null) {
        throw new UnsupportedOperationException();
    }

    int len = parsers.length;
    for (int i=0; i<len && position >= 0; i++) {
        position = parsers[i].parseInto(period, periodStr, position, locale);
    }
    return position;
}
 
源代码10 项目: coming   文件: Time_13_PeriodFormatterBuilder_s.java
void setFieldValue(ReadWritablePeriod period, int field, int value) {
    switch (field) {
    default:
        break;
    case YEARS:
        period.setYears(value);
        break;
    case MONTHS:
        period.setMonths(value);
        break;
    case WEEKS:
        period.setWeeks(value);
        break;
    case DAYS:
        period.setDays(value);
        break;
    case HOURS:
        period.setHours(value);
        break;
    case MINUTES:
        period.setMinutes(value);
        break;
    case SECONDS:
        period.setSeconds(value);
        break;
    case MILLIS:
        period.setMillis(value);
        break;
    }
}
 
源代码11 项目: coming   文件: Time_13_PeriodFormatterBuilder_s.java
public int parseInto(
        ReadWritablePeriod period, String periodStr,
        int position, Locale locale) {
    if (periodStr.regionMatches(true, position, iText, 0, iText.length())) {
        return position + iText.length();
    }
    return ~position;
}
 
源代码12 项目: coming   文件: Time_13_PeriodFormatterBuilder_s.java
public int parseInto(
        ReadWritablePeriod period, String periodStr,
        int position, Locale locale) {
    PeriodParser[] parsers = iParsers;
    if (parsers == null) {
        throw new UnsupportedOperationException();
    }

    int len = parsers.length;
    for (int i=0; i<len && position >= 0; i++) {
        position = parsers[i].parseInto(period, periodStr, position, locale);
    }
    return position;
}
 
源代码13 项目: coming   文件: Time_13_PeriodFormatterBuilder_t.java
void setFieldValue(ReadWritablePeriod period, int field, int value) {
    switch (field) {
    default:
        break;
    case YEARS:
        period.setYears(value);
        break;
    case MONTHS:
        period.setMonths(value);
        break;
    case WEEKS:
        period.setWeeks(value);
        break;
    case DAYS:
        period.setDays(value);
        break;
    case HOURS:
        period.setHours(value);
        break;
    case MINUTES:
        period.setMinutes(value);
        break;
    case SECONDS:
        period.setSeconds(value);
        break;
    case MILLIS:
        period.setMillis(value);
        break;
    }
}
 
源代码14 项目: coming   文件: Time_13_PeriodFormatterBuilder_t.java
public int parseInto(
        ReadWritablePeriod period, String periodStr,
        int position, Locale locale) {
    if (periodStr.regionMatches(true, position, iText, 0, iText.length())) {
        return position + iText.length();
    }
    return ~position;
}
 
源代码15 项目: coming   文件: Time_13_PeriodFormatterBuilder_t.java
public int parseInto(
        ReadWritablePeriod period, String periodStr,
        int position, Locale locale) {
    PeriodParser[] parsers = iParsers;
    if (parsers == null) {
        throw new UnsupportedOperationException();
    }

    int len = parsers.length;
    for (int i=0; i<len && position >= 0; i++) {
        position = parsers[i].parseInto(period, periodStr, position, locale);
    }
    return position;
}
 
源代码16 项目: coming   文件: Time_22_BasePeriod_s.java
/**
 * Creates a new period based on another using the {@link ConverterManager}.
 *
 * @param period  the period to convert
 * @param type  which set of fields this period supports, null means use type from object
 * @param chrono  the chronology to use, null means ISO default
 * @throws IllegalArgumentException if period is invalid
 * @throws IllegalArgumentException if an unsupported field's value is non-zero
 */
protected BasePeriod(Object period, PeriodType type, Chronology chrono) {
    super();
    PeriodConverter converter = ConverterManager.getInstance().getPeriodConverter(period);
    type = (type == null ? converter.getPeriodType(period) : type);
    type = checkPeriodType(type);
    iType = type;
    if (this instanceof ReadWritablePeriod) {
        iValues = new int[size()];
        chrono = DateTimeUtils.getChronology(chrono);
        converter.setInto((ReadWritablePeriod) this, period, chrono);
    } else {
        iValues = new MutablePeriod(period, type, chrono).getValues();
    }
}
 
源代码17 项目: coming   文件: Time_22_BasePeriod_t.java
/**
 * Creates a new period based on another using the {@link ConverterManager}.
 *
 * @param period  the period to convert
 * @param type  which set of fields this period supports, null means use type from object
 * @param chrono  the chronology to use, null means ISO default
 * @throws IllegalArgumentException if period is invalid
 * @throws IllegalArgumentException if an unsupported field's value is non-zero
 */
protected BasePeriod(Object period, PeriodType type, Chronology chrono) {
    super();
    PeriodConverter converter = ConverterManager.getInstance().getPeriodConverter(period);
    type = (type == null ? converter.getPeriodType(period) : type);
    type = checkPeriodType(type);
    iType = type;
    if (this instanceof ReadWritablePeriod) {
        iValues = new int[size()];
        chrono = DateTimeUtils.getChronology(chrono);
        converter.setInto((ReadWritablePeriod) this, period, chrono);
    } else {
        iValues = new MutablePeriod(period, type, chrono).getValues();
    }
}
 
源代码18 项目: jfixture   文件: ReadablePeriodRelay.java
@Override
public Object create(Object request, SpecimenContext context) {
    if (!(request.equals(ReadablePeriod.class) || request.equals(ReadWritablePeriod.class)))
        return new NoSpecimen();

    DateTime dateA = (DateTime) context.resolve(DateTime.class);
    DateTime dateB = (DateTime) context.resolve(DateTime.class);

    if (dateA.isBefore(dateB))
        return new MutablePeriod(dateA, dateB);
    else
        return new MutablePeriod(dateB, dateA);
}
 
源代码19 项目: astor   文件: BasePeriod.java
/**
 * Creates a new period based on another using the {@link ConverterManager}.
 *
 * @param period  the period to convert
 * @param type  which set of fields this period supports, null means use type from object
 * @param chrono  the chronology to use, null means ISO default
 * @throws IllegalArgumentException if period is invalid
 * @throws IllegalArgumentException if an unsupported field's value is non-zero
 */
protected BasePeriod(Object period, PeriodType type, Chronology chrono) {
    super();
    PeriodConverter converter = ConverterManager.getInstance().getPeriodConverter(period);
    type = (type == null ? converter.getPeriodType(period) : type);
    type = checkPeriodType(type);
    iType = type;
    if (this instanceof ReadWritablePeriod) {
        iValues = new int[size()];
        chrono = DateTimeUtils.getChronology(chrono);
        converter.setInto((ReadWritablePeriod) this, period, chrono);
    } else {
        iValues = new MutablePeriod(period, type, chrono).getValues();
    }
}
 
源代码20 项目: astor   文件: ReadableIntervalConverter.java
/**
 * Sets the values of the mutable duration from the specified interval.
 * 
 * @param writablePeriod  the period to modify
 * @param object  the interval to set from
 * @param chrono  the chronology to use
 */
public void setInto(ReadWritablePeriod writablePeriod, Object object, Chronology chrono) {
    ReadableInterval interval = (ReadableInterval) object;
    chrono = (chrono != null ? chrono : DateTimeUtils.getIntervalChronology(interval));
    long start = interval.getStartMillis();
    long end = interval.getEndMillis();
    int[] values = chrono.get(writablePeriod, start, end);
    for (int i = 0; i < values.length; i++) {
        writablePeriod.setValue(i, values[i]);
    }
}
 
源代码21 项目: astor   文件: StringConverter.java
/**
 * Extracts duration values from an object of this converter's type, and
 * sets them into the given ReadWritableDuration.
 *
 * @param period  period to get modified
 * @param object  the String to convert, must not be null
 * @param chrono  the chronology to use
 * @return the millisecond duration
 * @throws ClassCastException if the object is invalid
 */
public void setInto(ReadWritablePeriod period, Object object, Chronology chrono) {
    String str = (String) object;
    PeriodFormatter parser = ISOPeriodFormat.standard();
    period.clear();
    int pos = parser.parseInto(period, str, 0);
    if (pos < str.length()) {
        if (pos < 0) {
            // Parse again to get a better exception thrown.
            parser.withParseType(period.getPeriodType()).parseMutablePeriod(str);
        }
        throw new IllegalArgumentException("Invalid format: \"" + str + '"');
    }
}
 
源代码22 项目: astor   文件: PeriodFormatterBuilder.java
void setFieldValue(ReadWritablePeriod period, int field, int value) {
    switch (field) {
    default:
        break;
    case YEARS:
        period.setYears(value);
        break;
    case MONTHS:
        period.setMonths(value);
        break;
    case WEEKS:
        period.setWeeks(value);
        break;
    case DAYS:
        period.setDays(value);
        break;
    case HOURS:
        period.setHours(value);
        break;
    case MINUTES:
        period.setMinutes(value);
        break;
    case SECONDS:
        period.setSeconds(value);
        break;
    case MILLIS:
        period.setMillis(value);
        break;
    }
}
 
源代码23 项目: astor   文件: PeriodFormatterBuilder.java
public int parseInto(
        ReadWritablePeriod period, String periodStr,
        int position, Locale locale) {
    if (periodStr.regionMatches(true, position, iText, 0, iText.length())) {
        return position + iText.length();
    }
    return ~position;
}
 
源代码24 项目: astor   文件: PeriodFormatterBuilder.java
public int parseInto(
        ReadWritablePeriod period, String periodStr,
        int position, Locale locale) {
    PeriodParser[] parsers = iParsers;
    if (parsers == null) {
        throw new UnsupportedOperationException();
    }

    int len = parsers.length;
    for (int i=0; i<len && position >= 0; i++) {
        position = parsers[i].parseInto(period, periodStr, position, locale);
    }
    return position;
}
 
源代码25 项目: astor   文件: BasePeriod.java
/**
 * Creates a new period based on another using the {@link ConverterManager}.
 *
 * @param period  the period to convert
 * @param type  which set of fields this period supports, null means use type from object
 * @param chrono  the chronology to use, null means ISO default
 * @throws IllegalArgumentException if period is invalid
 * @throws IllegalArgumentException if an unsupported field's value is non-zero
 */
protected BasePeriod(Object period, PeriodType type, Chronology chrono) {
    super();
    PeriodConverter converter = ConverterManager.getInstance().getPeriodConverter(period);
    type = (type == null ? converter.getPeriodType(period) : type);
    type = checkPeriodType(type);
    iType = type;
    if (this instanceof ReadWritablePeriod) {
        iValues = new int[size()];
        chrono = DateTimeUtils.getChronology(chrono);
        converter.setInto((ReadWritablePeriod) this, period, chrono);
    } else {
        iValues = new MutablePeriod(period, type, chrono).getValues();
    }
}
 
源代码26 项目: astor   文件: ReadableIntervalConverter.java
/**
 * Sets the values of the mutable duration from the specified interval.
 * 
 * @param writablePeriod  the period to modify
 * @param object  the interval to set from
 * @param chrono  the chronology to use
 */
public void setInto(ReadWritablePeriod writablePeriod, Object object, Chronology chrono) {
    ReadableInterval interval = (ReadableInterval) object;
    chrono = (chrono != null ? chrono : DateTimeUtils.getIntervalChronology(interval));
    long start = interval.getStartMillis();
    long end = interval.getEndMillis();
    int[] values = chrono.get(writablePeriod, start, end);
    for (int i = 0; i < values.length; i++) {
        writablePeriod.setValue(i, values[i]);
    }
}
 
源代码27 项目: astor   文件: StringConverter.java
/**
 * Extracts duration values from an object of this converter's type, and
 * sets them into the given ReadWritableDuration.
 *
 * @param period  period to get modified
 * @param object  the String to convert, must not be null
 * @param chrono  the chronology to use
 * @return the millisecond duration
 * @throws ClassCastException if the object is invalid
 */
public void setInto(ReadWritablePeriod period, Object object, Chronology chrono) {
    String str = (String) object;
    PeriodFormatter parser = ISOPeriodFormat.standard();
    period.clear();
    int pos = parser.parseInto(period, str, 0);
    if (pos < str.length()) {
        if (pos < 0) {
            // Parse again to get a better exception thrown.
            parser.withParseType(period.getPeriodType()).parseMutablePeriod(str);
        }
        throw new IllegalArgumentException("Invalid format: \"" + str + '"');
    }
}
 
源代码28 项目: astor   文件: PeriodFormatterBuilder.java
void setFieldValue(ReadWritablePeriod period, int field, int value) {
    switch (field) {
    default:
        break;
    case YEARS:
        period.setYears(value);
        break;
    case MONTHS:
        period.setMonths(value);
        break;
    case WEEKS:
        period.setWeeks(value);
        break;
    case DAYS:
        period.setDays(value);
        break;
    case HOURS:
        period.setHours(value);
        break;
    case MINUTES:
        period.setMinutes(value);
        break;
    case SECONDS:
        period.setSeconds(value);
        break;
    case MILLIS:
        period.setMillis(value);
        break;
    }
}
 
源代码29 项目: astor   文件: PeriodFormatterBuilder.java
public int parseInto(
        ReadWritablePeriod period, String periodStr,
        int position, Locale locale) {
    if (periodStr.regionMatches(true, position, iText, 0, iText.length())) {
        return position + iText.length();
    }
    return ~position;
}
 
源代码30 项目: astor   文件: PeriodFormatterBuilder.java
public int parseInto(
        ReadWritablePeriod period, String periodStr,
        int position, Locale locale) {
    PeriodParser[] parsers = iParsers;
    if (parsers == null) {
        throw new UnsupportedOperationException();
    }

    int len = parsers.length;
    for (int i=0; i<len && position >= 0; i++) {
        position = parsers[i].parseInto(period, periodStr, position, locale);
    }
    return position;
}
 
 类所在包
 同包方法