public function test_getLong_TemporalField()
 {
     $test = LocalDateTime::of(2008, 6, 30, 12, 30, 40, 987654321);
     $this->assertEquals($test->getLong(CF::YEAR()), 2008);
     $this->assertEquals($test->getLong(CF::MONTH_OF_YEAR()), 6);
     $this->assertEquals($test->getLong(CF::DAY_OF_MONTH()), 30);
     $this->assertEquals($test->getLong(CF::DAY_OF_WEEK()), 1);
     $this->assertEquals($test->getLong(CF::DAY_OF_YEAR()), 182);
     $this->assertEquals($test->getLong(CF::HOUR_OF_DAY()), 12);
     $this->assertEquals($test->getLong(CF::MINUTE_OF_HOUR()), 30);
     $this->assertEquals($test->getLong(CF::SECOND_OF_MINUTE()), 40);
     $this->assertEquals($test->getLong(CF::NANO_OF_SECOND()), 987654321);
     $this->assertEquals($test->getLong(CF::HOUR_OF_AMPM()), 0);
     $this->assertEquals($test->getLong(CF::AMPM_OF_DAY()), 1);
 }
 public function test_getLong_TemporalField()
 {
     $test = OffsetDateTime::ofDateAndTime(LocalDate::of(2008, 6, 30), LocalTime::of(12, 30, 40, 987654321), self::OFFSET_PONE());
     $this->assertEquals($test->getLong(CF::YEAR()), 2008);
     $this->assertEquals($test->getLong(CF::MONTH_OF_YEAR()), 6);
     $this->assertEquals($test->getLong(CF::DAY_OF_MONTH()), 30);
     $this->assertEquals($test->getLong(CF::DAY_OF_WEEK()), 1);
     $this->assertEquals($test->getLong(CF::DAY_OF_YEAR()), 182);
     $this->assertEquals($test->getLong(CF::HOUR_OF_DAY()), 12);
     $this->assertEquals($test->getLong(CF::MINUTE_OF_HOUR()), 30);
     $this->assertEquals($test->getLong(CF::SECOND_OF_MINUTE()), 40);
     $this->assertEquals($test->getLong(CF::NANO_OF_SECOND()), 987654321);
     $this->assertEquals($test->getLong(CF::HOUR_OF_AMPM()), 0);
     $this->assertEquals($test->getLong(CF::AMPM_OF_DAY()), 1);
     $this->assertEquals($test->getLong(CF::INSTANT_SECONDS()), $test->toEpochSecond());
     $this->assertEquals($test->getLong(CF::OFFSET_SECONDS()), 3600);
 }
예제 #3
0
 public function test_isSupported_TemporalField()
 {
     // TODO $this->assertEquals(self::TEST_2008_06()->isSupported(null), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::NANO_OF_SECOND()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::NANO_OF_DAY()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::MICRO_OF_SECOND()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::MICRO_OF_DAY()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::MILLI_OF_SECOND()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::MILLI_OF_DAY()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::SECOND_OF_MINUTE()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::SECOND_OF_DAY()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::MINUTE_OF_HOUR()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::MINUTE_OF_DAY()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::HOUR_OF_AMPM()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::CLOCK_HOUR_OF_AMPM()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::HOUR_OF_DAY()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::CLOCK_HOUR_OF_DAY()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::AMPM_OF_DAY()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::DAY_OF_WEEK()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::ALIGNED_DAY_OF_WEEK_IN_MONTH()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::ALIGNED_DAY_OF_WEEK_IN_YEAR()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::DAY_OF_MONTH()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::DAY_OF_YEAR()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::EPOCH_DAY()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::ALIGNED_WEEK_OF_MONTH()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::ALIGNED_WEEK_OF_YEAR()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::MONTH_OF_YEAR()), true);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::PROLEPTIC_MONTH()), true);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::YEAR()), true);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::YEAR_OF_ERA()), true);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::ERA()), true);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::INSTANT_SECONDS()), false);
     $this->assertEquals(self::TEST_2008_06()->isSupported(CF::OFFSET_SECONDS()), false);
 }
예제 #4
0
 public static function RFC_1123_DATE_TIME()
 {
     // manually code maps to ensure correct data always used
     // (locale data can be changed by application code)
     $dow = [1 => "Mon", 2 => "Tue", 3 => "Wed", 4 => "Thu", 5 => "Fri", 6 => "Sat", 7 => "Sun"];
     $moy = [1 => "Jan", 2 => "Feb", 3 => "Mar", 4 => "Apr", 5 => "May", 6 => "Jun", 7 => "Jul", 8 => "Aug", 9 => "Sep", 10 => "Oct", 11 => "Nov", 12 => "Dec"];
     return self::$RFC_1123_DATE_TIME = (new DateTimeFormatterBuilder())->parseCaseInsensitive()->parseLenient()->optionalStart()->appendText3(ChronoField::DAY_OF_WEEK(), $dow)->appendLiteral2(", ")->optionalEnd()->appendValue3(ChronoField::DAY_OF_MONTH(), 1, 2, SignStyle::NOT_NEGATIVE())->appendLiteral(' ')->appendText3(ChronoField::MONTH_OF_YEAR(), $moy)->appendLiteral(' ')->appendValue2(ChronoField::YEAR(), 4)->appendLiteral(' ')->appendValue2(ChronoField::HOUR_OF_DAY(), 2)->appendLiteral(':')->appendValue2(ChronoField::MINUTE_OF_HOUR(), 2)->optionalStart()->appendLiteral(':')->appendValue2(ChronoField::SECOND_OF_MINUTE(), 2)->optionalEnd()->appendLiteral(' ')->appendOffset("+HHMM", "GMT")->toFormatter3(ResolverStyle::SMART(), IsoChronology::INSTANCE());
 }
예제 #5
0
 function data_fieldAndAccessor()
 {
     return [[CF::YEAR(), LocalDate::of(2000, 2, 29), true, 2000], [CF::YEAR(), LocalDateTime::of(2000, 2, 29, 5, 4, 3, 200), true, 2000], [CF::MONTH_OF_YEAR(), LocalDate::of(2000, 2, 29), true, 2], [CF::MONTH_OF_YEAR(), LocalDateTime::of(2000, 2, 29, 5, 4, 3, 200), true, 2], [CF::DAY_OF_MONTH(), LocalDate::of(2000, 2, 29), true, 29], [CF::DAY_OF_MONTH(), LocalDateTime::of(2000, 2, 29, 5, 4, 3, 200), true, 29], [CF::DAY_OF_YEAR(), LocalDate::of(2000, 2, 29), true, 60], [CF::DAY_OF_YEAR(), LocalDateTime::of(2000, 2, 29, 5, 4, 3, 200), true, 60], [CF::HOUR_OF_DAY(), LocalTime::of(5, 4, 3, 200), true, 5], [CF::HOUR_OF_DAY(), LocalDateTime::of(2000, 2, 29, 5, 4, 3, 200), true, 5], [CF::MINUTE_OF_DAY(), LocalTime::of(5, 4, 3, 200), true, 5 * 60 + 4], [CF::MINUTE_OF_DAY(), LocalDateTime::of(2000, 2, 29, 5, 4, 3, 200), true, 5 * 60 + 4], [CF::MINUTE_OF_HOUR(), LocalTime::of(5, 4, 3, 200), true, 4], [CF::MINUTE_OF_HOUR(), LocalDateTime::of(2000, 2, 29, 5, 4, 3, 200), true, 4], [CF::SECOND_OF_DAY(), LocalTime::of(5, 4, 3, 200), true, 5 * 3600 + 4 * 60 + 3], [CF::SECOND_OF_DAY(), LocalDateTime::of(2000, 2, 29, 5, 4, 3, 200), true, 5 * 3600 + 4 * 60 + 3], [CF::SECOND_OF_MINUTE(), LocalTime::of(5, 4, 3, 200), true, 3], [CF::SECOND_OF_MINUTE(), LocalDateTime::of(2000, 2, 29, 5, 4, 3, 200), true, 3], [CF::NANO_OF_SECOND(), LocalTime::of(5, 4, 3, 200), true, 200], [CF::NANO_OF_SECOND(), LocalDateTime::of(2000, 2, 29, 5, 4, 3, 200), true, 200], [CF::YEAR(), LocalTime::of(5, 4, 3, 200), false, -1], [CF::MONTH_OF_YEAR(), LocalTime::of(5, 4, 3, 200), false, -1], [CF::DAY_OF_MONTH(), LocalTime::of(5, 4, 3, 200), false, -1], [CF::DAY_OF_YEAR(), LocalTime::of(5, 4, 3, 200), false, -1], [CF::HOUR_OF_DAY(), LocalDate::of(2000, 2, 29), false, -1], [CF::MINUTE_OF_DAY(), LocalDate::of(2000, 2, 29), false, -1], [CF::MINUTE_OF_HOUR(), LocalDate::of(2000, 2, 29), false, -1], [CF::SECOND_OF_DAY(), LocalDate::of(2000, 2, 29), false, -1], [CF::SECOND_OF_MINUTE(), LocalDate::of(2000, 2, 29), false, -1], [CF::NANO_OF_SECOND(), LocalDate::of(2000, 2, 29), false, -1]];
 }
 /**
  * @expectedException \Celest\IllegalArgumentException
  */
 public function test_appendFraction_4arg_maxWidthMinWidth()
 {
     $this->builder->appendFraction(CF::MINUTE_OF_HOUR(), 9, 3, false);
 }
예제 #7
0
 private function resolveTime($hod, $moh, $som, $nos)
 {
     if ($this->resolverStyle == ResolverStyle::LENIENT()) {
         $totalNanos = Math::multiplyExact($hod, 3600000000000);
         $totalNanos = Math::addExact($totalNanos, Math::multiplyExact($moh, 60000000000));
         $totalNanos = Math::addExact($totalNanos, Math::multiplyExact($som, 1000000000));
         $totalNanos = Math::addExact($totalNanos, $nos);
         $excessDays = (int) Math::floorDiv($totalNanos, 86400000000000);
         // safe int cast
         $nod = Math::floorMod($totalNanos, 86400000000000);
         $this->updateCheckConflict(LocalTime::ofNanoOfDay($nod), Period::ofDays($excessDays));
     } else {
         // STRICT or SMART
         $mohVal = CF::MINUTE_OF_HOUR()->checkValidIntValue($moh);
         $nosVal = CF::NANO_OF_SECOND()->checkValidIntValue($nos);
         // handle 24:00 end of day
         if ($this->resolverStyle == ResolverStyle::SMART() && $hod == 24 && $mohVal == 0 && $som == 0 && $nosVal == 0) {
             $this->updateCheckConflict(LocalTime::MIDNIGHT(), Period::ofDays(1));
         } else {
             $hodVal = CF::HOUR_OF_DAY()->checkValidIntValue($hod);
             $somVal = CF::SECOND_OF_MINUTE()->checkValidIntValue($som);
             $this->updateCheckConflict(LocalTime::of($hodVal, $mohVal, $somVal, $nosVal), Period::ZERO());
         }
     }
 }
 /**
  * @dataProvider data_resolveFourToTime
  */
 public function test_resolveFourToDateTime($style, $hour, $min, $sec, $nano, $expectedTime, $excessPeriod)
 {
     $f = (new DateTimeFormatterBuilder())->parseDefaulting(ChronoField::YEAR(), 2012)->parseDefaulting(ChronoField::MONTH_OF_YEAR(), 6)->parseDefaulting(ChronoField::DAY_OF_MONTH(), 30)->parseDefaulting(ChronoField::HOUR_OF_DAY(), $hour)->parseDefaulting(ChronoField::MINUTE_OF_HOUR(), $min)->parseDefaulting(ChronoField::SECOND_OF_MINUTE(), $sec)->parseDefaulting(ChronoField::NANO_OF_SECOND(), $nano)->toFormatter();
     $styles = $style !== null ? [$style] : ResolverStyle::values();
     if ($expectedTime !== null && $excessPeriod !== null) {
         $expectedDate = LocalDate::of(2012, 6, 30)->plusAmount($excessPeriod);
         foreach ($styles as $s) {
             $accessor = $f->withResolverStyle($s)->parse("");
             $this->assertEquals($accessor->query(TemporalQueries::localDate()), $expectedDate, "ResolverStyle: " . $s);
             $this->assertEquals($accessor->query(TemporalQueries::localTime()), $expectedTime, "ResolverStyle: " . $s);
             $this->assertEquals($accessor->query(DateTimeFormatter::parsedExcessDays()), Period::ZERO(), "ResolverStyle: " . $s);
         }
     }
 }
예제 #9
0
 function data_localeDisplayNames()
 {
     return [[ChronoField::ERA()], [ChronoField::YEAR()], [ChronoField::MONTH_OF_YEAR()], [ChronoField::DAY_OF_WEEK()], [ChronoField::DAY_OF_MONTH()], [ChronoField::AMPM_OF_DAY()], [ChronoField::HOUR_OF_DAY()], [ChronoField::MINUTE_OF_HOUR()], [ChronoField::SECOND_OF_MINUTE()]];
 }
예제 #10
0
 function data_withTemporalField_outOfRange()
 {
     return [[CF::NANO_OF_SECOND(), $this->time(0, 0, 0, 0), CF::NANO_OF_SECOND()->range()->getMinimum() - 1], [CF::NANO_OF_SECOND(), $this->time(0, 0, 0, 0), CF::NANO_OF_SECOND()->range()->getMaximum() + 1], [CF::NANO_OF_DAY(), $this->time(0, 0, 0, 0), CF::NANO_OF_DAY()->range()->getMinimum() - 1], [CF::NANO_OF_DAY(), $this->time(0, 0, 0, 0), CF::NANO_OF_DAY()->range()->getMaximum() + 1], [CF::MICRO_OF_SECOND(), $this->time(0, 0, 0, 0), CF::MICRO_OF_SECOND()->range()->getMinimum() - 1], [CF::MICRO_OF_SECOND(), $this->time(0, 0, 0, 0), CF::MICRO_OF_SECOND()->range()->getMaximum() + 1], [CF::MICRO_OF_DAY(), $this->time(0, 0, 0, 0), CF::MICRO_OF_DAY()->range()->getMinimum() - 1], [CF::MICRO_OF_DAY(), $this->time(0, 0, 0, 0), CF::MICRO_OF_DAY()->range()->getMaximum() + 1], [CF::MILLI_OF_SECOND(), $this->time(0, 0, 0, 0), CF::MILLI_OF_SECOND()->range()->getMinimum() - 1], [CF::MILLI_OF_SECOND(), $this->time(0, 0, 0, 0), CF::MILLI_OF_SECOND()->range()->getMaximum() + 1], [CF::MILLI_OF_DAY(), $this->time(0, 0, 0, 0), CF::MILLI_OF_DAY()->range()->getMinimum() - 1], [CF::MILLI_OF_DAY(), $this->time(0, 0, 0, 0), CF::MILLI_OF_DAY()->range()->getMaximum() + 1], [CF::SECOND_OF_MINUTE(), $this->time(0, 0, 0, 0), CF::SECOND_OF_MINUTE()->range()->getMinimum() - 1], [CF::SECOND_OF_MINUTE(), $this->time(0, 0, 0, 0), CF::SECOND_OF_MINUTE()->range()->getMaximum() + 1], [CF::SECOND_OF_DAY(), $this->time(0, 0, 0, 0), CF::SECOND_OF_DAY()->range()->getMinimum() - 1], [CF::SECOND_OF_DAY(), $this->time(0, 0, 0, 0), CF::SECOND_OF_DAY()->range()->getMaximum() + 1], [CF::MINUTE_OF_HOUR(), $this->time(0, 0, 0, 0), CF::MINUTE_OF_HOUR()->range()->getMinimum() - 1], [CF::MINUTE_OF_HOUR(), $this->time(0, 0, 0, 0), CF::MINUTE_OF_HOUR()->range()->getMaximum() + 1], [CF::MINUTE_OF_DAY(), $this->time(0, 0, 0, 0), CF::MINUTE_OF_DAY()->range()->getMinimum() - 1], [CF::MINUTE_OF_DAY(), $this->time(0, 0, 0, 0), CF::MINUTE_OF_DAY()->range()->getMaximum() + 1], [CF::HOUR_OF_AMPM(), $this->time(0, 0, 0, 0), CF::HOUR_OF_AMPM()->range()->getMinimum() - 1], [CF::HOUR_OF_AMPM(), $this->time(0, 0, 0, 0), CF::HOUR_OF_AMPM()->range()->getMaximum() + 1], [CF::CLOCK_HOUR_OF_AMPM(), $this->time(0, 0, 0, 0), CF::CLOCK_HOUR_OF_AMPM()->range()->getMinimum() - 1], [CF::CLOCK_HOUR_OF_AMPM(), $this->time(0, 0, 0, 0), CF::CLOCK_HOUR_OF_AMPM()->range()->getMaximum() + 1], [CF::HOUR_OF_DAY(), $this->time(0, 0, 0, 0), CF::HOUR_OF_DAY()->range()->getMinimum() - 1], [CF::HOUR_OF_DAY(), $this->time(0, 0, 0, 0), CF::HOUR_OF_DAY()->range()->getMaximum() + 1], [CF::CLOCK_HOUR_OF_DAY(), $this->time(0, 0, 0, 0), CF::CLOCK_HOUR_OF_DAY()->range()->getMinimum() - 1], [CF::CLOCK_HOUR_OF_DAY(), $this->time(0, 0, 0, 0), CF::CLOCK_HOUR_OF_DAY()->range()->getMaximum() + 1], [CF::AMPM_OF_DAY(), $this->time(0, 0, 0, 0), CF::AMPM_OF_DAY()->range()->getMinimum() - 1], [CF::AMPM_OF_DAY(), $this->time(0, 0, 0, 0), CF::AMPM_OF_DAY()->range()->getMaximum() + 1]];
 }
예제 #11
0
 public function parse(DateTimeParseContext $context, $text, $position)
 {
     // TODO cache formatter
     // new context to avoid overwriting fields like year/month/day
     $minDigits = $this->fractionalDigits < 0 ? 0 : $this->fractionalDigits;
     $maxDigits = $this->fractionalDigits < 0 ? 9 : $this->fractionalDigits;
     $parser = (new DateTimeFormatterBuilder())->append(DateTimeFormatter::ISO_LOCAL_DATE())->appendLiteral('T')->appendValue2(ChronoField::HOUR_OF_DAY(), 2)->appendLiteral(':')->appendValue2(ChronoField::MINUTE_OF_HOUR(), 2)->appendLiteral(':')->appendValue2(ChronoField::SECOND_OF_MINUTE(), 2)->appendFraction(ChronoField::NANO_OF_SECOND(), $minDigits, $maxDigits, true)->appendLiteral('Z')->toFormatter()->toPrinterParser(false);
     $newContext = $context->copy();
     $pos = $parser->parse($newContext, $text, $position);
     if ($pos < 0) {
         return $pos;
     }
     // parser restricts most fields to 2 digits, so definitely int
     // correctly parsed nano is also guaranteed to be valid
     $yearParsed = $newContext->getParsed(ChronoField::YEAR());
     $month = $newContext->getParsed(ChronoField::MONTH_OF_YEAR());
     $day = $newContext->getParsed(ChronoField::DAY_OF_MONTH());
     $hour = $newContext->getParsed(ChronoField::HOUR_OF_DAY());
     $min = $newContext->getParsed(ChronoField::MINUTE_OF_HOUR());
     $secVal = $newContext->getParsed(ChronoField::SECOND_OF_MINUTE());
     $nanoVal = $newContext->getParsed(ChronoField::NANO_OF_SECOND());
     $sec = $secVal !== null ? $secVal : 0;
     $nano = $nanoVal !== null ? $nanoVal : 0;
     $days = 0;
     if ($hour === 24 && $min === 0 && $sec === 0 && $nano === 0) {
         $hour = 0;
         $days = 1;
     } else {
         if ($hour === 23 && $min === 59 && $sec === 60) {
             $context->setParsedLeapSecond();
             $sec = 59;
         }
     }
     $year = $yearParsed % 10000;
     try {
         $ldt = LocalDateTime::of($year, $month, $day, $hour, $min, $sec, 0)->plusDays($days);
         $instantSecs = $ldt->toEpochSecond(ZoneOffset::UTC());
         $instantSecs += Math::multiplyExact(Math::div($yearParsed, 10000), self::SECONDS_PER_10000_YEARS);
     } catch (RuntimeException $ex) {
         // TODO What do we actually catch here and why
         return ~$position;
     }
     $successPos = $pos;
     $successPos = $context->setParsedField(ChronoField::INSTANT_SECONDS(), $instantSecs, $position, $successPos);
     return $context->setParsedField(ChronoField::NANO_OF_SECOND(), $nano, $position, $successPos);
 }
 private function buildAccessor($year, $month, $day, $hour, $min, $sec, $nano, $offsetId, $zoneId)
 {
     $mock = new MockAccessor();
     if ($year !== null) {
         $mock->fields->put(ChronoField::YEAR(), $year);
     }
     if ($month !== null) {
         $mock->fields->put(ChronoField::MONTH_OF_YEAR(), $month);
     }
     if ($day !== null) {
         $mock->fields->put(ChronoField::DAY_OF_MONTH(), $day);
     }
     if ($hour !== null) {
         $mock->fields->put(ChronoField::HOUR_OF_DAY(), $hour);
     }
     if ($min !== null) {
         $mock->fields->put(ChronoField::MINUTE_OF_HOUR(), $min);
     }
     if ($sec !== null) {
         $mock->fields->put(ChronoField::SECOND_OF_MINUTE(), $sec);
     }
     if ($nano !== null) {
         $mock->fields->put(ChronoField::NANO_OF_SECOND(), $nano);
     }
     $mock->setOffset($offsetId);
     $mock->setZone($zoneId);
     return $mock;
 }
예제 #13
0
 public function test_with_TemporalField()
 {
     $test = OffsetTime::of(12, 30, 40, 987654321, self::OFFSET_PONE());
     $this->assertEquals($test->with(CF::HOUR_OF_DAY(), 15), OffsetTime::of(15, 30, 40, 987654321, self::OFFSET_PONE()));
     $this->assertEquals($test->with(CF::MINUTE_OF_HOUR(), 50), OffsetTime::of(12, 50, 40, 987654321, self::OFFSET_PONE()));
     $this->assertEquals($test->with(CF::SECOND_OF_MINUTE(), 50), OffsetTime::of(12, 30, 50, 987654321, self::OFFSET_PONE()));
     $this->assertEquals($test->with(CF::NANO_OF_SECOND(), 12345), OffsetTime::of(12, 30, 40, 12345, self::OFFSET_PONE()));
     $this->assertEquals($test->with(CF::HOUR_OF_AMPM(), 6), OffsetTime::of(18, 30, 40, 987654321, self::OFFSET_PONE()));
     $this->assertEquals($test->with(CF::AMPM_OF_DAY(), 0), OffsetTime::of(0, 30, 40, 987654321, self::OFFSET_PONE()));
     $this->assertEquals($test->with(CF::OFFSET_SECONDS(), 7205), OffsetTime::of(12, 30, 40, 987654321, ZoneOffset::ofHoursMinutesSeconds(2, 0, 5)));
 }
예제 #14
0
 function data_with_longTemporalField()
 {
     return [[Instant::ofEpochSecond(10, 200), CF::INSTANT_SECONDS(), 100, Instant::ofEpochSecond(100, 200), null], [Instant::ofEpochSecond(10, 200), CF::INSTANT_SECONDS(), 0, Instant::ofEpochSecond(0, 200), null], [Instant::ofEpochSecond(10, 200), CF::INSTANT_SECONDS(), -100, Instant::ofEpochSecond(-100, 200), null], [Instant::ofEpochSecond(10, 200), CF::NANO_OF_SECOND(), 100, Instant::ofEpochSecond(10, 100), null], [Instant::ofEpochSecond(10, 200), CF::NANO_OF_SECOND(), 0, Instant::ofEpochSecond(10), null], [Instant::ofEpochSecond(10, 200), CF::MICRO_OF_SECOND(), 100, Instant::ofEpochSecond(10, 100 * 1000), null], [Instant::ofEpochSecond(10, 200), CF::MICRO_OF_SECOND(), 0, Instant::ofEpochSecond(10), null], [Instant::ofEpochSecond(10, 200), CF::MILLI_OF_SECOND(), 100, Instant::ofEpochSecond(10, 100 * 1000 * 1000), null], [Instant::ofEpochSecond(10, 200), CF::MILLI_OF_SECOND(), 0, Instant::ofEpochSecond(10), null], [Instant::ofEpochSecond(10, 200), CF::NANO_OF_SECOND(), 1000000000, null, DateTimeException::class], [Instant::ofEpochSecond(10, 200), CF::MICRO_OF_SECOND(), 1000000, null, DateTimeException::class], [Instant::ofEpochSecond(10, 200), CF::MILLI_OF_SECOND(), 1000, null, DateTimeException::class], [Instant::ofEpochSecond(10, 200), CF::SECOND_OF_MINUTE(), 1, null, DateTimeException::class], [Instant::ofEpochSecond(10, 200), CF::SECOND_OF_DAY(), 1, null, DateTimeException::class], [Instant::ofEpochSecond(10, 200), CF::OFFSET_SECONDS(), 1, null, DateTimeException::class], [Instant::ofEpochSecond(10, 200), CF::NANO_OF_DAY(), 1, null, DateTimeException::class], [Instant::ofEpochSecond(10, 200), CF::MINUTE_OF_HOUR(), 1, null, DateTimeException::class], [Instant::ofEpochSecond(10, 200), CF::MINUTE_OF_DAY(), 1, null, DateTimeException::class], [Instant::ofEpochSecond(10, 200), CF::MILLI_OF_DAY(), 1, null, DateTimeException::class], [Instant::ofEpochSecond(10, 200), CF::MICRO_OF_DAY(), 1, null, DateTimeException::class]];
 }
예제 #15
0
 function data_withFieldLong()
 {
     return [[self::TEST_LOCAL_2008_06_30_11_30_59_500()->atZone(self::ZONE_PARIS()), CF::YEAR(), 2009, $this->dateTimeZoned(2009, 6, 30, 11, 30, 59, 500, self::OFFSET_0200(), self::ZONE_PARIS())], [self::TEST_LOCAL_2008_06_30_11_30_59_500()->atZone(self::ZONE_PARIS()), CF::MONTH_OF_YEAR(), 7, $this->dateTimeZoned(2008, 7, 30, 11, 30, 59, 500, self::OFFSET_0200(), self::ZONE_PARIS())], [self::TEST_LOCAL_2008_06_30_11_30_59_500()->atZone(self::ZONE_PARIS()), CF::DAY_OF_MONTH(), 15, $this->dateTimeZoned(2008, 6, 15, 11, 30, 59, 500, self::OFFSET_0200(), self::ZONE_PARIS())], [self::TEST_LOCAL_2008_06_30_11_30_59_500()->atZone(self::ZONE_PARIS()), CF::HOUR_OF_DAY(), 14, $this->dateTimeZoned(2008, 6, 30, 14, 30, 59, 500, self::OFFSET_0200(), self::ZONE_PARIS())], [self::TEST_PARIS_OVERLAP_2008_10_26_02_30()->atZone(self::ZONE_PARIS())->withEarlierOffsetAtOverlap(), CF::HOUR_OF_DAY(), 0, $this->dateTimeZoned(2008, 10, 26, 0, 30, 0, 0, self::OFFSET_0200(), self::ZONE_PARIS())], [self::TEST_PARIS_OVERLAP_2008_10_26_02_30()->atZone(self::ZONE_PARIS())->withLaterOffsetAtOverlap(), CF::HOUR_OF_DAY(), 0, $this->dateTimeZoned(2008, 10, 26, 0, 30, 0, 0, self::OFFSET_0200(), self::ZONE_PARIS())], [self::TEST_PARIS_OVERLAP_2008_10_26_02_30()->atZone(self::ZONE_PARIS())->withEarlierOffsetAtOverlap(), CF::MINUTE_OF_HOUR(), 20, $this->dateTimeZoned(2008, 10, 26, 2, 20, 0, 0, self::OFFSET_0200(), self::ZONE_PARIS())], [self::TEST_PARIS_OVERLAP_2008_10_26_02_30()->atZone(self::ZONE_PARIS())->withLaterOffsetAtOverlap(), CF::MINUTE_OF_HOUR(), 20, $this->dateTimeZoned(2008, 10, 26, 2, 20, 0, 0, self::OFFSET_0100(), self::ZONE_PARIS())], [self::TEST_PARIS_OVERLAP_2008_10_26_02_30()->atZone(self::ZONE_PARIS())->withEarlierOffsetAtOverlap(), CF::HOUR_OF_DAY(), 3, $this->dateTimeZoned(2008, 10, 26, 3, 30, 0, 0, self::OFFSET_0100(), self::ZONE_PARIS())], [self::TEST_PARIS_OVERLAP_2008_10_26_02_30()->atZone(self::ZONE_PARIS())->withLaterOffsetAtOverlap(), CF::HOUR_OF_DAY(), 3, $this->dateTimeZoned(2008, 10, 26, 3, 30, 0, 0, self::OFFSET_0100(), self::ZONE_PARIS())], [self::TEST_LOCAL_2008_06_30_11_30_59_500()->atZone(self::ZONE_PARIS()), CF::OFFSET_SECONDS(), 7200, $this->dateTimeZoned(2008, 6, 30, 11, 30, 59, 500, self::OFFSET_0200(), self::ZONE_PARIS())], [self::TEST_LOCAL_2008_06_30_11_30_59_500()->atZone(self::ZONE_PARIS()), CF::OFFSET_SECONDS(), 3600, $this->dateTimeZoned(2008, 6, 30, 11, 30, 59, 500, self::OFFSET_0200(), self::ZONE_PARIS())], [self::TEST_PARIS_OVERLAP_2008_10_26_02_30()->atZone(self::ZONE_PARIS())->withEarlierOffsetAtOverlap(), CF::OFFSET_SECONDS(), 3600, $this->dateTimeZoned(2008, 10, 26, 2, 30, 0, 0, self::OFFSET_0100(), self::ZONE_PARIS())], [self::TEST_PARIS_OVERLAP_2008_10_26_02_30()->atZone(self::ZONE_PARIS())->withLaterOffsetAtOverlap(), CF::OFFSET_SECONDS(), 3600, $this->dateTimeZoned(2008, 10, 26, 2, 30, 0, 0, self::OFFSET_0100(), self::ZONE_PARIS())], [self::TEST_PARIS_OVERLAP_2008_10_26_02_30()->atZone(self::ZONE_PARIS())->withEarlierOffsetAtOverlap(), CF::OFFSET_SECONDS(), 7200, $this->dateTimeZoned(2008, 10, 26, 2, 30, 0, 0, self::OFFSET_0200(), self::ZONE_PARIS())], [self::TEST_PARIS_OVERLAP_2008_10_26_02_30()->atZone(self::ZONE_PARIS())->withLaterOffsetAtOverlap(), CF::OFFSET_SECONDS(), 7200, $this->dateTimeZoned(2008, 10, 26, 2, 30, 0, 0, self::OFFSET_0200(), self::ZONE_PARIS())]];
 }
 public function test_adjacent_lenient_fractionFollows_0digit()
 {
     // succeeds because hour/min are fixed width
     $f = $this->builder->parseLenient()->appendValue2(ChronoField::HOUR_OF_DAY(), 2)->appendValue2(ChronoField::MINUTE_OF_HOUR(), 2)->appendFraction(ChronoField::NANO_OF_SECOND(), 3, 3, false)->toFormatter2(Locale::UK());
     $pp = new ParsePosition(0);
     $parsed = $f->parseUnresolved("1230", $pp);
     $this->assertEquals($pp->getErrorIndex(), -1);
     $this->assertEquals($pp->getIndex(), 4);
     $this->assertEquals($parsed->getLong(ChronoField::HOUR_OF_DAY()), 12);
     $this->assertEquals($parsed->getLong(ChronoField::MINUTE_OF_HOUR()), 30);
 }
예제 #17
0
 /**
  * Returns a copy of this {@code LocalTime} with the minute-of-hour altered.
  * <p>
  * This instance is immutable and unaffected by this method call.
  *
  * @param int $minute the minute-of-hour to set in the result, from 0 to 59
  * @return LocalTime a {@code LocalTime} based on this time with the requested minute, not null
  * @throws DateTimeException if the minute value is invalid
  */
 public function withMinute($minute)
 {
     if ($this->minute === $minute) {
         return $this;
     }
     ChronoField::MINUTE_OF_HOUR()->checkValidValue($minute);
     return self::create($this->hour, $minute, $this->second, $this->nano);
 }
 public static function init()
 {
     self::$FIELD_MAP = ['G' => ChronoField::ERA(), 'y' => ChronoField::YEAR_OF_ERA(), 'u' => ChronoField::YEAR(), 'Q' => IsoFields::QUARTER_OF_YEAR(), 'q' => IsoFields::QUARTER_OF_YEAR(), 'M' => ChronoField::MONTH_OF_YEAR(), 'L' => ChronoField::MONTH_OF_YEAR(), 'D' => ChronoField::DAY_OF_YEAR(), 'd' => ChronoField::DAY_OF_MONTH(), 'F' => ChronoField::ALIGNED_DAY_OF_WEEK_IN_MONTH(), 'E' => ChronoField::DAY_OF_WEEK(), 'c' => ChronoField::DAY_OF_WEEK(), 'e' => ChronoField::DAY_OF_WEEK(), 'a' => ChronoField::AMPM_OF_DAY(), 'H' => ChronoField::HOUR_OF_DAY(), 'k' => ChronoField::CLOCK_HOUR_OF_DAY(), 'K' => ChronoField::HOUR_OF_AMPM(), 'h' => ChronoField::CLOCK_HOUR_OF_AMPM(), 'm' => ChronoField::MINUTE_OF_HOUR(), 's' => ChronoField::SECOND_OF_MINUTE(), 'S' => ChronoField::NANO_OF_SECOND(), 'A' => ChronoField::MILLI_OF_DAY(), 'n' => ChronoField::NANO_OF_SECOND(), 'N' => ChronoField::NANO_OF_DAY()];
 }