java.time.temporal.TemporalQueries.chronology()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(12.8k)|赞(0)|评价(0)|浏览(86)

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

TemporalQueries.chronology介绍

[英]A query for the Chronology.

This queries a TemporalAccessor for the chronology. If the target TemporalAccessor represents a date, or part of a date, then it should return the chronology that the date is expressed in. As a result of this definition, objects only representing time, such as LocalTime, will return null.

The result from JDK classes implementing TemporalAccessor is as follows:
LocalDate returns IsoChronology.INSTANCE
LocalTime returns null (does not represent a date)
LocalDateTime returns IsoChronology.INSTANCE
ZonedDateTime returns IsoChronology.INSTANCE
OffsetTime returns null (does not represent a date)
OffsetDateTime returns IsoChronology.INSTANCE
ChronoLocalDate returns the associated chronology
ChronoLocalDateTime returns the associated chronology
ChronoZonedDateTime returns the associated chronology
Era returns the associated chronology
DayOfWeek returns null (shared across chronologies)
Month returns IsoChronology.INSTANCE
Year returns IsoChronology.INSTANCE
YearMonth returns IsoChronology.INSTANCE
MonthDay returns null IsoChronology.INSTANCE
ZoneOffset returns null (does not represent a date)
Instant returns null (does not represent a date)

The method Chronology#from(TemporalAccessor) can be used as a TemporalQuery via a method reference, Chrono::from. That method is equivalent to this query, except that it throws an exception if a chronology cannot be obtained.
[中]对年表的查询。
这会向临时助理查询年表。如果目标临时助理代表某个日期或某个日期的一部分,那么它应该返回表示该日期的年表。此定义的结果是,仅表示时间的对象(如LocalTime)将返回null。
JDK类实现TemporalAccessor的结果如下:
LocalDate返回等时性。例子
LocalTime返回null(不代表日期)
LocalDateTime返回等时性。例子
ZoneDateTime返回等时线。例子
OffsetTime返回null(不代表日期)
OffsetDateTime返回等时线。例子
ChronoLocalDate返回相关的年表
ChronoLocalDateTime返回相关的年表
ChronoZonedDateTime返回相关的时间顺序
Era返回相关的年表
DayOfWeek返回null(跨时间段共享)
月返回等时线。例子
年回归等时学。例子
YearMonth返回等时线。例子
MonthDay返回空等时线。例子
ZoneOffset返回null(不代表日期)
即时返回null(不代表日期)
方法年表#from(TemporalAccessor)可以通过方法引用Chrono::from用作临时查询。该方法与此查询等效,只是如果无法获取时间顺序,它会引发异常。

代码示例

代码示例来源:origin: com.github.seratch/java-time-backport

@SuppressWarnings("unchecked")
  @Override
  public <R> R query(TemporalQuery<R> query) {
    if (query == TemporalQueries.chronology()) {
      return (R) Chronology.this;
    }
    return super.query(query);
  }
});

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

/**
 * Queries this day-of-month using the specified query.
 * <p>
 * This queries this day-of-month using the specified query strategy object.
 * The {@code TemporalQuery} object defines the logic to be used to
 * obtain the result. Read the documentation of the query to understand
 * what the result of this method will be.
 * <p>
 * The result of this method is obtained by invoking the
 * {@link TemporalQuery#queryFrom(TemporalAccessor)} method on the
 * specified query passing {@code this} as the argument.
 *
 * @param <R> the type of the result
 * @param query  the query to invoke, not null
 * @return the query result, null may be returned (defined by the query)
 * @throws DateTimeException if unable to query (defined by the query)
 * @throws ArithmeticException if numeric overflow occurs (defined by the query)
 */
@SuppressWarnings("unchecked")
@Override
public <R> R query(TemporalQuery<R> query) {
  if (query == TemporalQueries.chronology()) {
    return (R) IsoChronology.INSTANCE;
  }
  return TemporalAccessor.super.query(query);
}

代码示例来源:origin: com.github.seratch/java-time-backport

@Override
public <R> R query(TemporalQuery<R> query) {
  if (query == TemporalQueries.zoneId() || query == TemporalQueries.chronology() || query == TemporalQueries.precision()) {
    return null;
  }
  return query.queryFrom(this);
}

代码示例来源:origin: com.github.seratch/java-time-backport

@Override
public boolean print(DateTimePrintContext context, StringBuilder buf) {
  Chronology chrono = context.getValue(TemporalQueries.chronology());
  if (chrono == null) {
    return false;
  }
  if (textStyle == null) {
    buf.append(chrono.getId());
  } else {
    ResourceBundle bundle = ResourceBundle.getBundle(
        "java.bp.format.ChronologyText", context.getLocale(), DateTimeFormatterBuilder.class.getClassLoader());
    try {
      String text = bundle.getString(chrono.getId());
      buf.append(text);
    } catch (MissingResourceException ex) {
      buf.append(chrono.getId());
    }
  }
  return true;
}

代码示例来源:origin: com.github.seratch/java-time-backport

/**
 * Obtains an instance of {@code Chronology} from a temporal object.
 * <p>
 * A {@code TemporalAccessor} represents some form of date and time information.
 * This factory converts the arbitrary temporal object to an instance of {@code Chronology}.
 * If the specified temporal object does not have a chronology, {@link IsoChronology} is returned.
 * <p>
 * The conversion will obtain the chronology using {@link TemporalQueries#chronology()}.
 * <p>
 * This method matches the signature of the functional interface {@link TemporalQuery}
 * allowing it to be used in queries via method reference, {@code Chrono::from}.
 *
 * @param temporal  the temporal to convert, not null
 * @return the chronology, not null
 * @throws DateTimeException if unable to convert to an {@code Chronology}
 */
public static Chronology from(TemporalAccessor temporal) {
  Jdk8Methods.requireNonNull(temporal, "temporal");
  Chronology obj = temporal.query(TemporalQueries.chronology());
  return (obj != null ? obj : IsoChronology.INSTANCE);
}

代码示例来源:origin: com.github.seratch/java-time-backport

@SuppressWarnings("unchecked")
@Override
public <R> R query(TemporalQuery<R> query) {
  if (query == TemporalQueries.chronology()) {
    return (R) chrono;
  }
  if (query == TemporalQueries.zoneId() || query == TemporalQueries.zone()) {
    return (R) zone;
  }
  return super.query(query);
}

代码示例来源:origin: net.time4j/time4j-range

@Override
public CalendarYear createFrom(
  TemporalAccessor threeten,
  AttributeQuery attributes
) {
  if (threeten.query(TemporalQueries.chronology()) == IsoChronology.INSTANCE) {
    if (threeten.isSupported(ChronoField.YEAR)) {
      int year = threeten.get(ChronoField.YEAR);
      return CalendarYear.of(year);
    }
  }
  return null;
}

代码示例来源:origin: com.github.seratch/java-time-backport

@SuppressWarnings("unchecked")
  @Override
  public <R> R query(TemporalQuery<R> query) {
    if (query == TemporalQueries.chronology()) {
      return (R) effectiveChrono;
    }
    if (query == TemporalQueries.zoneId()) {
      return (R) effectiveZone;
    }
    if (query == TemporalQueries.precision()) {
      return temporal.query(query);
    }
    return query.queryFrom(this);
  }
};

代码示例来源:origin: com.github.seratch/java-time-backport

@SuppressWarnings("unchecked")
@Override
public <R> R query(TemporalQuery<R> query) {
  if (query == TemporalQueries.precision()) {
    return (R) ChronoUnit.ERAS;
  }
  if (query == TemporalQueries.chronology() || query == TemporalQueries.zone() ||
      query == TemporalQueries.zoneId() || query == TemporalQueries.offset() ||
      query == TemporalQueries.localDate() || query == TemporalQueries.localTime()) {
    return null;
  }
  return query.queryFrom(this);
}

代码示例来源:origin: com.github.seratch/java-time-backport

@SuppressWarnings("unchecked")
@Override
public <R> R query(TemporalQuery<R> query) {
  if (query == TemporalQueries.precision()) {
    return (R) ChronoUnit.ERAS;
  }
  if (query == TemporalQueries.chronology() || query == TemporalQueries.zone() ||
      query == TemporalQueries.zoneId() || query == TemporalQueries.offset() ||
      query == TemporalQueries.localDate() || query == TemporalQueries.localTime()) {
    return null;
  }
  return query.queryFrom(this);
}

代码示例来源:origin: com.github.seratch/java-time-backport

@SuppressWarnings("unchecked")
@Override
public <R> R query(TemporalQuery<R> query) {
  if (query == TemporalQueries.precision()) {
    return (R) ChronoUnit.ERAS;
  }
  if (query == TemporalQueries.chronology() || query == TemporalQueries.zone() ||
      query == TemporalQueries.zoneId() || query == TemporalQueries.offset() ||
      query == TemporalQueries.localDate() || query == TemporalQueries.localTime()) {
    return null;
  }
  return query.queryFrom(this);
}

代码示例来源:origin: com.github.seratch/java-time-backport

@SuppressWarnings("unchecked")
@Override
public <R> R query(TemporalQuery<R> query) {
  if (query == TemporalQueries.precision()) {
    return (R) ChronoUnit.ERAS;
  }
  if (query == TemporalQueries.chronology() || query == TemporalQueries.zone() ||
      query == TemporalQueries.zoneId() || query == TemporalQueries.offset() ||
      query == TemporalQueries.localDate() || query == TemporalQueries.localTime()) {
    return null;
  }
  return query.queryFrom(this);
}

代码示例来源:origin: com.github.seratch/java-time-backport

@SuppressWarnings("unchecked")
@Override
public <R> R query(TemporalQuery<R> query) {
  if (query == TemporalQueries.precision()) {
    return (R) ChronoUnit.ERAS;
  }
  if (query == TemporalQueries.chronology() || query == TemporalQueries.zone() ||
      query == TemporalQueries.zoneId() || query == TemporalQueries.offset() ||
      query == TemporalQueries.localDate() || query == TemporalQueries.localTime()) {
    return null;
  }
  return query.queryFrom(this);
}

代码示例来源:origin: com.github.seratch/java-time-backport

@Override
public Temporal addTo(Temporal temporal) {
  Jdk8Methods.requireNonNull(temporal, "temporal");
  Chronology temporalChrono = temporal.query(TemporalQueries.chronology());
  if (temporalChrono != null && chronology.equals(temporalChrono) == false) {
    throw new DateTimeException("Invalid chronology, required: " + chronology.getId() + ", but was: " + temporalChrono.getId());
  }
  if (years != 0) {
    temporal = temporal.plus(years, YEARS);
  }
  if (months != 0) {
    temporal = temporal.plus(months, MONTHS);
  }
  if (days != 0) {
    temporal = temporal.plus(days, DAYS);
  }
  return temporal;
}

代码示例来源:origin: com.github.seratch/java-time-backport

@Override
public Temporal subtractFrom(Temporal temporal) {
  Jdk8Methods.requireNonNull(temporal, "temporal");
  Chronology temporalChrono = temporal.query(TemporalQueries.chronology());
  if (temporalChrono != null && chronology.equals(temporalChrono) == false) {
    throw new DateTimeException("Invalid chronology, required: " + chronology.getId() + ", but was: " + temporalChrono.getId());
  }
  if (years != 0) {
    temporal = temporal.minus(years, YEARS);
  }
  if (months != 0) {
    temporal = temporal.minus(months, MONTHS);
  }
  if (days != 0) {
    temporal = temporal.minus(days, DAYS);
  }
  return temporal;
}

代码示例来源:origin: com.github.seratch/java-time-backport

@SuppressWarnings("unchecked")
@Override
public <R> R query(TemporalQuery<R> query) {
  if (query == TemporalQueries.chronology()) {
    return (R) getChronology();
  } else if (query == TemporalQueries.precision()) {
    return (R) ChronoUnit.DAYS;
  } else if (query == TemporalQueries.localDate()) {
    return (R) LocalDate.ofEpochDay(toEpochDay());
  } else if (query == TemporalQueries.localTime() || query == TemporalQueries.zone() ||
      query == TemporalQueries.zoneId() || query == TemporalQueries.offset()) {
    return null;
  }
  return super.query(query);
}

代码示例来源:origin: com.github.seratch/java-time-backport

@SuppressWarnings("unchecked")
@Override
public <R> R query(TemporalQuery<R> query) {
  if (query == TemporalQueries.zoneId()) {
    return (R) zone;
  } else if (query == TemporalQueries.chronology()) {
    return (R) chrono;
  } else if (query == TemporalQueries.localDate()) {
    return date != null ? (R) LocalDate.from(date) : null;
  } else if (query == TemporalQueries.localTime()) {
    return (R) time;
  } else if (query == TemporalQueries.zone() || query == TemporalQueries.offset()) {
    return query.queryFrom(this);
  } else if (query == TemporalQueries.precision()) {
    return null;  // not a complete date/time
  }
  // inline TemporalAccessor.super.query(query) as an optimization
  // non-JDK classes are not permitted to make this optimization
  return query.queryFrom(this);
}

代码示例来源:origin: com.github.seratch/java-time-backport

@SuppressWarnings("unchecked")
@Override
public <R> R query(TemporalQuery<R> query) {
  if (query == TemporalQueries.chronology()) {
    return (R) getChronology();
  } else if (query == TemporalQueries.precision()) {
    return (R) NANOS;
  } else if (query == TemporalQueries.localDate()) {
    return (R) LocalDate.ofEpochDay(toLocalDate().toEpochDay());
  } else if (query == TemporalQueries.localTime()) {
    return (R) toLocalTime();
  } else if (query == TemporalQueries.zone() || query == TemporalQueries.zoneId() || query == TemporalQueries.offset()) {
    return null;
  }
  return super.query(query);
}

代码示例来源:origin: com.github.seratch/java-time-backport

@SuppressWarnings("unchecked")
@Override
public <R> R query(TemporalQuery<R> query) {
  if (query == TemporalQueries.zoneId() || query == TemporalQueries.zone()) {
    return (R) getZone();
  } else if (query == TemporalQueries.chronology()) {
    return (R) toLocalDate().getChronology();
  } else if (query == TemporalQueries.precision()) {
    return (R) NANOS;
  } else if (query == TemporalQueries.offset()) {
    return (R) getOffset();
  } else if (query == TemporalQueries.localDate()) {
    return (R) LocalDate.ofEpochDay(toLocalDate().toEpochDay());
  } else if (query == TemporalQueries.localTime()) {
    return (R) toLocalTime();
  }
  return super.query(query);
}

代码示例来源:origin: net.time4j/time4j-range

@Override
public CalendarMonth createFrom(
  TemporalAccessor threeten,
  AttributeQuery attributes
) {
  if (threeten.query(TemporalQueries.chronology()) == IsoChronology.INSTANCE) {
    if (threeten.isSupported(ChronoField.YEAR)) {
      if (threeten.isSupported(ChronoField.MONTH_OF_YEAR)) {
        Leniency leniency = attributes.get(Attributes.LENIENCY, Leniency.SMART);
        int year = threeten.get(ChronoField.YEAR);
        int month = threeten.get(ChronoField.MONTH_OF_YEAR);
        if (leniency.isLax()) {
          PlainDate date = PlainDate.of(year, 1, 1);
          date = date.with(PlainDate.MONTH_AS_NUMBER.setLenient(month));
          return CalendarMonth.of(date.getYear(), date.getMonth());
        } else {
          return CalendarMonth.of(year, month);
        }
      }
    }
  }
  return null;
}

相关文章