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

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

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

TemporalQueries.offset介绍

[英]A query for ZoneOffset returning null if not found.

This returns a TemporalQuery that can be used to query a temporal object for the offset. The query will return null if the temporal object cannot supply an offset.

The query implementation examines the ChronoField#OFFSET_SECONDSfield and uses it to create a ZoneOffset.
[中]对ZoneOffset的查询,如果未找到,则返回null。
这将返回一个临时查询,该查询可用于为偏移量查询临时对象。如果时态对象不能提供偏移量,查询将返回null。
查询实现检查ChronoField#OFFSET_SECONDSfield,并使用它创建区域偏移。

代码示例

代码示例来源:origin: stanfordnlp/CoreNLP

TemporalAccessor datetime = formatter.parse(value);
ZoneId parsedTimezone = datetime.query(TemporalQueries.zoneId());
ZoneOffset parsedOffset = datetime.query(TemporalQueries.offset());
if (parsedTimezone != null) {
 return Optional.of(java.time.Instant.from(datetime));

代码示例来源:origin: embulk/embulk

final ZoneOffset givenZoneOffset = given.query(TemporalQueries.offset());
if (given.isSupported(ChronoField.EPOCH_DAY) && given.isSupported(ChronoField.NANO_OF_DAY)) {

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

/**
 * Obtains an instance of {@code ZoneOffset} 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 ZoneOffset}.
 * <p>
 * The conversion uses the {@link TemporalQueries#offset()} query, which relies
 * on extracting the {@link ChronoField#OFFSET_SECONDS OFFSET_SECONDS} field.
 * <p>
 * This method matches the signature of the functional interface {@link TemporalQuery}
 * allowing it to be used in queries via method reference, {@code ZoneOffset::from}.
 *
 * @param temporal  the temporal object to convert, not null
 * @return the zone-offset, not null
 * @throws DateTimeException if unable to convert to an {@code ZoneOffset}
 */
public static ZoneOffset from(TemporalAccessor temporal) {
  ZoneOffset offset = temporal.query(TemporalQueries.offset());
  if (offset == null) {
    throw new DateTimeException("Unable to obtain ZoneOffset from TemporalAccessor: " +
        temporal + ", type " + temporal.getClass().getName());
  }
  return offset;
}

代码示例来源: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

/**
 * Queries this day-of-week using the specified query.
 * <p>
 * This queries this day-of-week 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.precision()) {
    return (R) DAYS;
  } else if (query == TemporalQueries.localDate() || query == TemporalQueries.localTime() || query == TemporalQueries.chronology() ||
      query == TemporalQueries.zone() || query == TemporalQueries.zoneId() || query == TemporalQueries.offset()) {
    return null;
  }
  return query.queryFrom(this);
}

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

/**
 * Queries this offset using the specified query.
 * <p>
 * This queries this offset 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.offset() || query == TemporalQueries.zone()) {
    return (R) this;
  } else if (query == TemporalQueries.localDate() || query == TemporalQueries.localTime() ||
      query == TemporalQueries.precision() || query == TemporalQueries.chronology() || query == TemporalQueries.zoneId()) {
    return null;
  }
  return query.queryFrom(this);
}

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

return (R) YEARS;
} else if (query == TemporalQueries.localDate() || query == TemporalQueries.localTime() ||
    query == TemporalQueries.zone() || query == TemporalQueries.zoneId() || query == TemporalQueries.offset()) {
  return null;

代码示例来源:origin: kousen/java_8_recipes

@Test
public void queries() {
  assertEquals(DAYS, LocalDate.now().query(precision()));
  assertEquals(NANOS, LocalTime.now().query(precision()));
  ZoneOffset offset = ZonedDateTime.now().getOffset();
  ZoneOffset query = ZonedDateTime.now().query(offset());
  assertEquals(offset, query);
  assertEquals(ZoneId.systemDefault(), ZonedDateTime.now().query(zone()));
  assertEquals(ZoneId.systemDefault(), ZonedDateTime.now().query(zoneId()));
}

代码示例来源:origin: org.kie/kie-dmn-feel

public FEELFnResult<TemporalAccessor> invoke(@ParameterName("from") String val) {
  if ( val == null ) {
    return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "from", "cannot be null"));
  }
  
  try {
    TemporalAccessor parsed = FEEL_TIME.parse(val);
    if (parsed.query(TemporalQueries.offset()) != null) {
      // it is an offset-zoned time, so I can know for certain an OffsetTime
      OffsetTime asOffSetTime = parsed.query(OffsetTime::from);
      return FEELFnResult.ofResult(asOffSetTime);
    } else if (parsed.query(TemporalQueries.zone()) == null) {
      // if it does not contain any zone information at all, then I know for certain is a local time.
      LocalTime asLocalTime = parsed.query(LocalTime::from);
      return FEELFnResult.ofResult(asLocalTime);
    }
    return FEELFnResult.ofResult(parsed);
  } catch (DateTimeException e) {
    return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "from", e));
  }
}

代码示例来源: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: org.kie/kie-dmn-feel

public FEELFnResult<TemporalAccessor> invoke(@ParameterName("from") String val) {
  if (val == null) {
    return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "cannot be null"));
  }
  try {
    TemporalAccessor parsed = FEEL_TIME.parse(val);
    if (parsed.query(TemporalQueries.offset()) != null) {
      // it is an offset-zoned time, so I can know for certain an OffsetTime
      OffsetTime asOffSetTime = parsed.query(OffsetTime::from);
      return FEELFnResult.ofResult(asOffSetTime);
    } else if (parsed.query(TemporalQueries.zone()) == null) {
      // if it does not contain any zone information at all, then I know for certain is a local time.
      LocalTime asLocalTime = parsed.query(LocalTime::from);
      return FEELFnResult.ofResult(asLocalTime);
    }
    return FEELFnResult.ofResult(parsed);
  } catch (DateTimeException e) {
    // try to parse it as a date time and extract the date component
    // NOTE: this is an extension to the standard
    return BuiltInFunctions.getFunction(DateAndTimeFunction.class).invoke(val)
        .cata(overrideLeft -> FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "time-parsing exception", e)),
            this::invoke
        );
  }
}

代码示例来源: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: org.kie/kie-dmn-feel

public FEELFnResult<TemporalAccessor> invoke(@ParameterName("from") TemporalAccessor date) {
    if (date == null) {
      return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "cannot be null"));
    }

    try {
      // If the temporal accessor type doesn't support time, try to parse it as a date with UTC midnight.
      if (!date.isSupported(ChronoField.HOUR_OF_DAY)) {
        return BuiltInFunctions.getFunction( DateAndTimeFunction.class ).invoke( date, OffsetTime.of(0, 0, 0, 0, ZoneOffset.UTC) )
            .cata( overrideLeft -> FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "time-parsing exception")),
                this::invoke
            );
      } else if( date.query( TemporalQueries.offset() ) == null ) {
        return FEELFnResult.ofResult(LocalTime.from(date));
      } else {
        ZoneId zone = date.query(TemporalQueries.zoneId());
        if (!(zone instanceof ZoneOffset)) {
          // TZ is a ZoneRegion, so do NOT normalize (although the result will be unreversible, but will keep what was supplied originally).
          // Unfortunately java.time.Parsed is a package-private class, hence will need to re-parse in order to have it instantiated.
          return invoke(date.query(TemporalQueries.localTime()) + "@" + zone);
        } else {
          return FEELFnResult.ofResult(OffsetTime.from(date));
        }
      }
    } catch (DateTimeException e) {
      return FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "time-parsing exception", e));
    }
  }
}

代码示例来源:origin: org.kie/kie-dmn-feel

public FEELFnResult<TemporalAccessor> invoke(@ParameterName("from") TemporalAccessor date) {
  if ( date == null ) {
    return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "from", "cannot be null"));
  }
  
  try {
    // If the temporal accessor type doesn't support time, try to parse it as a date with UTC midnight.
    if (!date.isSupported(ChronoField.HOUR_OF_DAY)) {
      return BuiltInFunctions.getFunction( DateAndTimeFunction.class ).invoke( date, OffsetTime.of(0, 0, 0, 0, ZoneOffset.UTC) )
          .cata( overrideLeft -> FEELFnResult.ofError(new InvalidParametersEvent(FEELEvent.Severity.ERROR, "from", "time-parsing exception")),
              this::invoke
          );
    } else if( date.query( TemporalQueries.offset() ) == null ) {
      return FEELFnResult.ofResult( LocalTime.from( date ) );
    } else {
      ZoneId zone = date.query(TemporalQueries.zoneId());
      if (!(zone instanceof ZoneOffset)) {
        // TZ is a ZoneRegion, so do NOT normalize (although the result will be unreversible, but will keep what was supplied originally).
        // Unfortunately java.time.Parsed is a package-private class, hence will need to re-parse in order to have it instantiated. 
        return invoke(date.query(TemporalQueries.localTime()) + "@" + zone);
      } else {
        return FEELFnResult.ofResult(OffsetTime.from(date));
      }
    }
  } catch (DateTimeException e) {
    return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "from", "time-parsing exception", e));
  }
}

相关文章