org.threeten.bp.zone.ZoneOffsetTransitionRule类的使用及代码示例

x33g5p2x  于2022-02-05 转载在 其他  
字(10.2k)|赞(0)|评价(0)|浏览(99)

本文整理了Java中org.threeten.bp.zone.ZoneOffsetTransitionRule类的一些代码示例,展示了ZoneOffsetTransitionRule类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ZoneOffsetTransitionRule类的具体详情如下:
包路径:org.threeten.bp.zone.ZoneOffsetTransitionRule
类名称:ZoneOffsetTransitionRule

ZoneOffsetTransitionRule介绍

[英]A rule expressing how to create a transition.

This class allows rules for identifying future transitions to be expressed. A rule might be written in many forms:

  • the 16th March
  • the Sunday on or after the 16th March
  • the Sunday on or before the 16th March
  • the last Sunday in February

These different rule types can be expressed and queried.

Specification for implementors

This class is immutable and thread-safe.
[中]表示如何创建转换的规则。
此类允许表示用于标识未来转换的规则。规则可能有多种形式:
*3月16日
*3月16日当天或之后的星期日
*3月16日或之前的星期日
*二月的最后一个星期天
可以表达和查询这些不同的规则类型。
####实施者规范
这个类是不可变的,是线程安全的。

代码示例

代码示例来源:origin: stackoverflow.com

rule.getMonth().getValue(),
rule.createTransition(thisYear).getDateTimeBefore().get(
  weekOfMonth),
rule.getDayOfWeek().getValue() % 7,
rule.getLocalTime());

代码示例来源:origin: ThreeTen/threetenbp

} else {
  long timeOfDaysMins = time.toSecondOfDay() / 60 + adjustDays * 24 * 60;
  appendZeroPad(buf, Jdk8Methods.floorDiv(timeOfDaysMins, 60));
  buf.append(':');
  appendZeroPad(buf, Jdk8Methods.floorMod(timeOfDaysMins, 60));

代码示例来源:origin: ThreeTen/threetenbp

private static Object readInternal(byte type, DataInput in) throws IOException, ClassNotFoundException {
  switch (type) {
    case SZR:
      return StandardZoneRules.readExternal(in);
    case ZOT:
      return ZoneOffsetTransition.readExternal(in);
    case ZOTRULE:
      return ZoneOffsetTransitionRule.readExternal(in);
    default:
      throw new StreamCorruptedException("Unknown serialized type");
  }
}

代码示例来源:origin: net.oneandone.ical4j/ical4j

int transitionRuleMonthValue = transitionRule.getMonth().getValue();
DayOfWeek transitionRuleDayOfWeek = transitionRule.getDayOfWeek();
LocalDateTime ldt = LocalDateTime.now(zoneId)
                .with(TemporalAdjusters.firstInMonth(transitionRuleDayOfWeek))
                .withMonth(transitionRuleMonthValue)
                .with(transitionRule.getLocalTime());
Month month = ldt.getMonth();
}while((ldt = ldt.plus(org.threeten.bp.Period.ofWeeks(1))).getMonth() == month);
Integer dayOfMonth = allDaysOfWeek.ceiling(transitionRule.getDayOfMonthIndicator());
if (dayOfMonth == null) {
  dayOfMonth = allDaysOfWeek.last();
  TzOffsetFrom offsetFrom = new TzOffsetFrom(new UtcOffset(transitionRule.getOffsetBefore().getTotalSeconds() * 1000L));
  TzOffsetTo offsetTo = new TzOffsetTo(new UtcOffset(transitionRule.getOffsetAfter().getTotalSeconds() * 1000L));
  RRule rrule = new RRule(rruleText);
  Observance observance = (transitionRule.getOffsetAfter().getTotalSeconds() > rawTimeZoneOffsetInSeconds) ? new Daylight() : new Standard();
  observance.getProperties().add(new DtStart(String.format(DATE_TIME_TPL, startDate.withMonth(transitionRule.getMonth().getValue())
                                                      .withDayOfMonth(transitionRule.getDayOfMonthIndicator())
                                                      .with(transitionRule.getDayOfWeek()))));

代码示例来源:origin: ThreeTen/threetenbp

/**
 * Finds the appropriate transition array for the given year.
 *
 * @param year  the year, not null
 * @return the transition array, not null
 */
private ZoneOffsetTransition[] findTransitionArray(int year) {
  Integer yearObj = year;  // should use Year class, but this saves a class load
  ZoneOffsetTransition[] transArray = lastRulesCache.get(yearObj);
  if (transArray != null) {
    return transArray;
  }
  ZoneOffsetTransitionRule[] ruleArray = lastRules;
  transArray  = new ZoneOffsetTransition[ruleArray.length];
  for (int i = 0; i < ruleArray.length; i++) {
    transArray[i] = ruleArray[i].createTransition(year);
  }
  if (year < LAST_CACHED_YEAR) {
    lastRulesCache.putIfAbsent(yearObj, transArray);
  }
  return transArray;
}

代码示例来源:origin: org.threeten/threetenbp

/**
 * Converts this to a transition rule.
 *
 * @param standardOffset  the active standard offset, not null
 * @param savingsBeforeSecs  the active savings before the transition in seconds
 * @return the transition, not null
 */
ZoneOffsetTransitionRule toTransitionRule(ZoneOffset standardOffset, int savingsBeforeSecs) {
  // optimize stored format
  if (dayOfMonthIndicator < 0) {
    if (month != Month.FEBRUARY) {
      dayOfMonthIndicator = month.maxLength() - 6;
    }
  }
  // build rule
  ZoneOffsetTransition trans = toTransition(standardOffset, savingsBeforeSecs);
  return new ZoneOffsetTransitionRule(
      month, dayOfMonthIndicator, dayOfWeek, time, adjustDays, timeDefinition,
      standardOffset, trans.getOffsetBefore(), trans.getOffsetAfter());
}

代码示例来源:origin: org.threeten/threetenbp

/**
 * Finds the appropriate transition array for the given year.
 *
 * @param year  the year, not null
 * @return the transition array, not null
 */
private ZoneOffsetTransition[] findTransitionArray(int year) {
  Integer yearObj = year;  // should use Year class, but this saves a class load
  ZoneOffsetTransition[] transArray = lastRulesCache.get(yearObj);
  if (transArray != null) {
    return transArray;
  }
  ZoneOffsetTransitionRule[] ruleArray = lastRules;
  transArray  = new ZoneOffsetTransition[ruleArray.length];
  for (int i = 0; i < ruleArray.length; i++) {
    transArray[i] = ruleArray[i].createTransition(year);
  }
  if (year < LAST_CACHED_YEAR) {
    lastRulesCache.putIfAbsent(yearObj, transArray);
  }
  return transArray;
}

代码示例来源:origin: ThreeTen/threetenbp

/**
 * Converts this to a transition rule.
 *
 * @param standardOffset  the active standard offset, not null
 * @param savingsBeforeSecs  the active savings before the transition in seconds
 * @return the transition, not null
 */
ZoneOffsetTransitionRule toTransitionRule(ZoneOffset standardOffset, int savingsBeforeSecs) {
  // optimize stored format
  if (dayOfMonthIndicator < 0) {
    if (month != Month.FEBRUARY) {
      dayOfMonthIndicator = month.maxLength() - 6;
    }
  }
  // build rule
  ZoneOffsetTransition trans = toTransition(standardOffset, savingsBeforeSecs);
  return new ZoneOffsetTransitionRule(
      month, dayOfMonthIndicator, dayOfWeek, time, adjustDays, timeDefinition,
      standardOffset, trans.getOffsetBefore(), trans.getOffsetAfter());
}

代码示例来源:origin: ThreeTen/threetenbp

/**
 * Reads the state from the stream.
 *
 * @param in  the input stream, not null
 * @return the created object, not null
 * @throws IOException if an error occurs
 */
static ZoneOffsetTransitionRule readExternal(DataInput in) throws IOException {
  int data = in.readInt();
  Month month = Month.of(data >>> 28);
  int dom = ((data & (63 << 22)) >>> 22) - 32;
  int dowByte = (data & (7 << 19)) >>> 19;
  DayOfWeek dow = dowByte == 0 ? null : DayOfWeek.of(dowByte);
  int timeByte = (data & (31 << 14)) >>> 14;
  TimeDefinition defn = TimeDefinition.values()[(data & (3 << 12)) >>> 12];
  int stdByte = (data & (255 << 4)) >>> 4;
  int beforeByte = (data & (3 << 2)) >>> 2;
  int afterByte = (data & 3);
  int timeOfDaysSecs = (timeByte == 31 ? in.readInt() : timeByte * 3600);
  ZoneOffset std = (stdByte == 255 ? ZoneOffset.ofTotalSeconds(in.readInt()) : ZoneOffset.ofTotalSeconds((stdByte - 128) * 900));
  ZoneOffset before = (beforeByte == 3 ? ZoneOffset.ofTotalSeconds(in.readInt()) : ZoneOffset.ofTotalSeconds(std.getTotalSeconds() + beforeByte * 1800));
  ZoneOffset after = (afterByte == 3 ? ZoneOffset.ofTotalSeconds(in.readInt()) : ZoneOffset.ofTotalSeconds(std.getTotalSeconds() + afterByte * 1800));
  // only bit of validation that we need to copy from public of() method
  if (dom < -28 || dom > 31 || dom == 0) {
    throw new IllegalArgumentException("Day of month indicator must be between -28 and 31 inclusive excluding zero");
  }
  LocalTime time = LocalTime.ofSecondOfDay(Jdk8Methods.floorMod(timeOfDaysSecs, SECS_PER_DAY));
  int adjustDays = Jdk8Methods.floorDiv(timeOfDaysSecs, SECS_PER_DAY);
  return new ZoneOffsetTransitionRule(month, dom, dow, time, adjustDays, defn, std, before, after);
}

代码示例来源:origin: org.threeten/threetenbp

private static Object readInternal(byte type, DataInput in) throws IOException, ClassNotFoundException {
  switch (type) {
    case SZR:
      return StandardZoneRules.readExternal(in);
    case ZOT:
      return ZoneOffsetTransition.readExternal(in);
    case ZOTRULE:
      return ZoneOffsetTransitionRule.readExternal(in);
    default:
      throw new StreamCorruptedException("Unknown serialized type");
  }
}

代码示例来源:origin: org.threeten/threetenbp

} else {
  long timeOfDaysMins = time.toSecondOfDay() / 60 + adjustDays * 24 * 60;
  appendZeroPad(buf, Jdk8Methods.floorDiv(timeOfDaysMins, 60));
  buf.append(':');
  appendZeroPad(buf, Jdk8Methods.floorMod(timeOfDaysMins, 60));

代码示例来源:origin: org.threeten/threetenbp

/**
 * Reads the state from the stream.
 *
 * @param in  the input stream, not null
 * @return the created object, not null
 * @throws IOException if an error occurs
 */
static ZoneOffsetTransitionRule readExternal(DataInput in) throws IOException {
  int data = in.readInt();
  Month month = Month.of(data >>> 28);
  int dom = ((data & (63 << 22)) >>> 22) - 32;
  int dowByte = (data & (7 << 19)) >>> 19;
  DayOfWeek dow = dowByte == 0 ? null : DayOfWeek.of(dowByte);
  int timeByte = (data & (31 << 14)) >>> 14;
  TimeDefinition defn = TimeDefinition.values()[(data & (3 << 12)) >>> 12];
  int stdByte = (data & (255 << 4)) >>> 4;
  int beforeByte = (data & (3 << 2)) >>> 2;
  int afterByte = (data & 3);
  int timeOfDaysSecs = (timeByte == 31 ? in.readInt() : timeByte * 3600);
  ZoneOffset std = (stdByte == 255 ? ZoneOffset.ofTotalSeconds(in.readInt()) : ZoneOffset.ofTotalSeconds((stdByte - 128) * 900));
  ZoneOffset before = (beforeByte == 3 ? ZoneOffset.ofTotalSeconds(in.readInt()) : ZoneOffset.ofTotalSeconds(std.getTotalSeconds() + beforeByte * 1800));
  ZoneOffset after = (afterByte == 3 ? ZoneOffset.ofTotalSeconds(in.readInt()) : ZoneOffset.ofTotalSeconds(std.getTotalSeconds() + afterByte * 1800));
  // only bit of validation that we need to copy from public of() method
  if (dom < -28 || dom > 31 || dom == 0) {
    throw new IllegalArgumentException("Day of month indicator must be between -28 and 31 inclusive excluding zero");
  }
  LocalTime time = LocalTime.ofSecondOfDay(Jdk8Methods.floorMod(timeOfDaysSecs, SECS_PER_DAY));
  int adjustDays = Jdk8Methods.floorDiv(timeOfDaysSecs, SECS_PER_DAY);
  return new ZoneOffsetTransitionRule(month, dom, dow, time, adjustDays, defn, std, before, after);
}

代码示例来源:origin: ThreeTen/threetenbp

ZoneOffsetTransitionRule[] rules = new ZoneOffsetTransitionRule[ruleSize];
for (int i = 0; i < ruleSize; i++) {
  rules[i] = ZoneOffsetTransitionRule.readExternal(in);

代码示例来源:origin: ThreeTen/threetenbp

throw new IllegalArgumentException("Time must be midnight when end of day flag is true");
return new ZoneOffsetTransitionRule(month, dayOfMonthIndicator, dayOfWeek, time, timeEndOfDay ? 1 : 0, timeDefnition, standardOffset, offsetBefore, offsetAfter);

代码示例来源:origin: org.threeten/threetenbp

ZoneOffsetTransitionRule[] rules = new ZoneOffsetTransitionRule[ruleSize];
for (int i = 0; i < ruleSize; i++) {
  rules[i] = ZoneOffsetTransitionRule.readExternal(in);

代码示例来源:origin: org.threeten/threetenbp

throw new IllegalArgumentException("Time must be midnight when end of day flag is true");
return new ZoneOffsetTransitionRule(month, dayOfMonthIndicator, dayOfWeek, time, timeEndOfDay ? 1 : 0, timeDefnition, standardOffset, offsetBefore, offsetAfter);

相关文章