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

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

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

TemporalQueries.zone介绍

[英]A lenient query for the ZoneId, falling back to the ZoneOffset.

This queries a TemporalAccessor for the zone. It first tries to obtain the zone, using #zoneId(). If that is not found it tries to obtain the #offset().

In most cases, applications should use this query rather than #zoneId().

This query examines the ChronoField#OFFSET_SECONDSfield and uses it to create a ZoneOffset.

The method ZoneId#from(TemporalAccessor) can be used as a TemporalQuery via a method reference, ZoneId::from. That method is equivalent to this query, except that it throws an exception if a zone cannot be obtained.
[中]对ZoneId的宽松查询,回到ZoneOffset。
这将查询区域的临时助理。它首先尝试使用#zoneId()获取区域。如果没有找到,它会尝试获取#offset()。
在大多数情况下,应用程序应该使用此查询,而不是#zoneId()。
此查询检查ChronoField#OFFSET_SECONDSfield,并使用它创建区域偏移。
方法ZoneId#from(TemporalAccessor)可以通过方法引用ZoneId::from用作临时查询。该方法与此查询等效,只是如果无法获取区域,它会引发异常。

代码示例

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

final ZoneId expectedZoneId = ((Temporal) expectedValue).query( TemporalQueries.zone() );
  ZoneId actualZoneId = ((Temporal) actualValue).query( TemporalQueries.zone() );

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

private long parseDateTime(String value, ZoneId timeZone, boolean roundUpIfNoTime) {
    DateFormatter formatter = roundUpIfNoTime ? this.roundUpFormatter : this.formatter;
    try {
      if (timeZone == null) {
        return DateFormatters.toZonedDateTime(formatter.parse(value)).toInstant().toEpochMilli();
      } else {
        TemporalAccessor accessor = formatter.parse(value);
        ZoneId zoneId = TemporalQueries.zone().queryFrom(accessor);
        if (zoneId != null) {
          timeZone = zoneId;
        }

        return DateFormatters.toZonedDateTime(accessor).withZoneSameLocal(timeZone).toInstant().toEpochMilli();
      }
    } catch (IllegalArgumentException | DateTimeException e) {
      throw new ElasticsearchParseException("failed to parse date field [{}]: [{}]", e, value, e.getMessage());
    }
  }
}

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

private Optional<ZonedDateTime> getZonedDateTime(TemporalAccessor parsed) {
  ZoneId zone = parsed.query(TemporalQueries.zone());
  if (zone == null) {
    return Optional.empty();
  }
  Optional<ZonedDateTime> zonedDateTime = getLocalDateTime(parsed)
      .map(localDateTime -> localDateTime.atZone(zone));
  if (!zonedDateTime.isPresent()) {
    zonedDateTime = getLocalDate(parsed).map(localDate -> localDate.atStartOfDay(zone));
  }
  return zonedDateTime;
}

代码示例来源: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.nhl.link.rest/link-rest-base

private Optional<ZonedDateTime> getZonedDateTime(TemporalAccessor parsed) {
  ZoneId zone = parsed.query(TemporalQueries.zone());
  if (zone == null) {
    return Optional.empty();
  }
  Optional<ZonedDateTime> zonedDateTime = getLocalDateTime(parsed)
      .map(localDateTime -> localDateTime.atZone(zone));
  if (!zonedDateTime.isPresent()) {
    zonedDateTime = getLocalDate(parsed).map(localDate -> localDate.atStartOfDay(zone));
  }
  return zonedDateTime;
}

代码示例来源: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: org.eclipse/yasson

@Override
  protected XMLGregorianCalendar parseWithFormatter(String jsonValue, DateTimeFormatter formatter) {
    final TemporalAccessor parsed = formatter.parse(jsonValue);
    LocalTime time = parsed.query(TemporalQueries.localTime());
    ZoneId zone = parsed.query(TemporalQueries.zone());
    if (zone == null) {
      zone = UTC;
    }
    if (time == null) {
      time = ZERO_LOCAL_TIME;
    }
    ZonedDateTime result = LocalDate.from(parsed).atTime(time).atZone(zone);
    return datatypeFactory.newXMLGregorianCalendar(GregorianCalendar.from(result));
  }
}

代码示例来源: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: org.eclipse/yasson

@Override
  protected Calendar parseWithFormatter(String jsonValue, DateTimeFormatter formatter) {
    final TemporalAccessor parsed = formatter.parse(jsonValue);
    LocalTime time = parsed.query(TemporalQueries.localTime());
    ZoneId zone = parsed.query(TemporalQueries.zone());
    if (zone == null) {
      zone = UTC;
    }
    if (time == null) {
      time = ZERO_LOCAL_TIME;
    }
    ZonedDateTime result = LocalDate.from(parsed).atTime(time).atZone(zone);
    return GregorianCalendar.from(result);
  }
}

代码示例来源: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: org.apache.johnzon/johnzon-jsonb

private static ZonedDateTime parseZonedDateTime(final String text, final DateTimeFormatter formatter, final ZoneId defaultZone){
  TemporalAccessor parse = formatter.parse(text);
  ZoneId zone = parse.query(TemporalQueries.zone());
  if (Objects.isNull(zone)) {
    zone = defaultZone;
  }
  int year = parse.isSupported(YEAR) ? parse.get(YEAR) : 0;
  int month = parse.isSupported(MONTH_OF_YEAR) ? parse.get(MONTH_OF_YEAR) : 0;
  int day = parse.isSupported(DAY_OF_MONTH) ? parse.get(DAY_OF_MONTH) : 0;
  int hour = parse.isSupported(HOUR_OF_DAY) ? parse.get(HOUR_OF_DAY) : 0;
  int minute = parse.isSupported(MINUTE_OF_HOUR) ? parse.get(MINUTE_OF_HOUR) : 0;
  int second = parse.isSupported(SECOND_OF_MINUTE) ? parse.get(SECOND_OF_MINUTE) : 0;
  int millisecond = parse.isSupported(MILLI_OF_SECOND) ? parse.get(MILLI_OF_SECOND) : 0;
  return ZonedDateTime.of(year, month, day, hour, minute, second, millisecond, zone);
}

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

private static ZonedDateTime parseZonedDateTime(final String text, final DateTimeFormatter formatter, final ZoneId defaultZone){
  TemporalAccessor parse = formatter.parse(text);
  ZoneId zone = parse.query(TemporalQueries.zone());
  if (Objects.isNull(zone)) {
    zone = defaultZone;
  }
  int year = parse.isSupported(YEAR) ? parse.get(YEAR) : 0;
  int month = parse.isSupported(MONTH_OF_YEAR) ? parse.get(MONTH_OF_YEAR) : 0;
  int day = parse.isSupported(DAY_OF_MONTH) ? parse.get(DAY_OF_MONTH) : 0;
  int hour = parse.isSupported(HOUR_OF_DAY) ? parse.get(HOUR_OF_DAY) : 0;
  int minute = parse.isSupported(MINUTE_OF_HOUR) ? parse.get(MINUTE_OF_HOUR) : 0;
  int second = parse.isSupported(SECOND_OF_MINUTE) ? parse.get(SECOND_OF_MINUTE) : 0;
  int millisecond = parse.isSupported(MILLI_OF_SECOND) ? parse.get(MILLI_OF_SECOND) : 0;
  return ZonedDateTime.of(year, month, day, hour, minute, second, millisecond, zone);
}

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

@Test
public void testComposite4() {
  final FEELFnResult<TemporalAccessor> p1 = dateFunction.invoke("2017-01-01");
  final FEELFnResult<TemporalAccessor> p2 = timeFunction.invoke("23:59:01@Europe/Paris");
  FunctionTestUtil.assertResult(p1, LocalDate.of(2017, 1, 1));
  final TemporalAccessor p2TA = p2.getOrElse(null);
  assertNotNull(p2TA);
  assertEquals(LocalTime.of(23, 59, 1), p2TA.query(TemporalQueries.localTime()));
  assertEquals(ZoneId.of("Europe/Paris"), p2TA.query(TemporalQueries.zone()));
  final FEELFnResult<TemporalAccessor> result = dateTimeFunction.invoke(p1.getOrElse(null), p2.getOrElse(null));
  FunctionTestUtil.assertResult(result, ZonedDateTime.of(2017, 1, 1, 23, 59, 1, 0, ZoneId.of("Europe/Paris")));
}

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

@Test
public void parseWithZoneIANA() {
  final TemporalAccessor parsedResult = timeFunction.invoke("00:01:00@Europe/Paris").getOrElse(null);
  assertEquals(LocalTime.of(0, 1, 0), parsedResult.query(TemporalQueries.localTime()));
  assertEquals(ZoneId.of("Europe/Paris"), parsedResult.query(TemporalQueries.zone()));
}

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

@Test
public void parseWithZone() {
  final TemporalAccessor parsedResult = timeFunction.invoke("00:01:00@Etc/UTC").getOrElse(null);
  assertEquals(LocalTime.of(0, 1, 0), parsedResult.query(TemporalQueries.localTime()));
  assertEquals(ZoneId.of("Etc/UTC"), parsedResult.query(TemporalQueries.zone()));
}

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

@Test
  public void testComposite5() {
    final FEELFnResult<TemporalAccessor> p1 = dateTimeFunction.invoke("2017-08-10T10:20:00@Europe/Paris");
    FunctionTestUtil.assertResult(p1, ZonedDateTime.of(2017, 8, 10, 10, 20, 0, 0, ZoneId.of("Europe/Paris")));

    final TemporalAccessor timeOnDateTime = timeFunction.invoke(p1.getOrElse(null)).getOrElse(null);
    assertNotNull(timeOnDateTime);
    assertEquals(LocalTime.of(10, 20, 0), timeOnDateTime.query(TemporalQueries.localTime()));
    assertEquals(ZoneId.of("Europe/Paris"), timeOnDateTime.query(TemporalQueries.zone()));

    FunctionTestUtil.assertResult(stringFunction.invoke(timeOnDateTime), "10:20:00@Europe/Paris");
  }
}

相关文章