Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8033660

Duration.between calculation throw UnsupportedTemporalTypeException

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Not an Issue
    • Icon: P4 P4
    • None
    • 8
    • core-libs
    • x86_64
    • linux

      FULL PRODUCT VERSION :
      java 8 build 124 64 bit


      ADDITIONAL OS VERSION INFORMATION :
      Linux localhost.localdomain 3.12.8-300.fc20.x86_64 #1 SMP Thu Jan 16 01:07:50 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux


      A DESCRIPTION OF THE PROBLEM :
      Following code throws a UnsupportedTemporalTypeException:

              LocalDate birthDate = LocalDate.parse("20000129",DateTimeFormatter.BASIC_ISO_DATE);
              Duration.between(birthDate, LocalDate.now());


      If you look at the source code this is logical:
      The method body of Duration.between @ line 475 calls DateTime.untill with SECONDS as TemporalUnit
      and SECONDS is not in the switch and thats why the exception is thrown



      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      execute following code :

              LocalDate birthDate = LocalDate.parse("20000129",DateTimeFormatter.BASIC_ISO_DATE);
              Duration.between(birthDate, LocalDate.now());

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      a java.time.Duration
      ACTUAL -
      exception thrown

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      Unsupported unit: Seconds
      java.time.temporal.UnsupportedTemporalTypeException
      at java.time.LocalDate.until(LocalDate.java:1608)
      at java.time.Duration.between(Duration.java:475)
      at nl.benooms.java8project.java8project.PersonTest.testAge0YearOld(PersonTest.java:30)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:483)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:242)
      at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:137)
      at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:483)
      at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
      at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
      at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
      at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
      at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)


      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      LocalDate birthDate = LocalDate.parse("20000129",DateTimeFormatter.BASIC_ISO_DATE);
      Duration.between(birthDate, LocalDate.now());
      ---------- END SOURCE ----------

            rriggs Roger Riggs
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: