[Solved] java.time.DateTimeException: Invalid value for HourOfDay (valid values 0 – 23): 24

java.time.DateTimeException occurs while calculating Date and Time in java.time classes. This exception is used to indicate problems with creating, querying and manipulating date-time objects.

Constructors

  • DateTimeException(String message) : Constructs a new date-time exception with the specified message.
  • DateTimeException(String message, Throwable cause) : Constructs a new date-time exception with the specified message and cause.

Sample Code

try {
// Try creating time by providing invalid inputs
LocalTime invalidTime = LocalTime.of(24,18);
// Exception in thread "main" java.time.DateTimeException:
// Invalid value for HourOfDay (valid values 0 - 23): 24
} catch (DateTimeException ex) {
ex.printStackTrace();
}

Output Message

 


Exception in thread "main" java.time.DateTimeException: Invalid value for HourOfDay (valid values 0 - 23): 24
    at java.time.temporal.ValueRange.checkValidValue(Unknown Source)
    at java.time.temporal.ChronoField.checkValidValue(Unknown Source)
    at java.time.LocalTime.of(Unknown Source)
    at datetime.Java8DateTime.main(Java8DateTime.java:69)

Issue

Here with throw DateTimeException if pass as Invalidate Date and Time. For above example passing hour as 24 which causing this issue because allowed values for hours is between range 0-23.

Solutions

To solve this issue pass hour value in method as between range 0-23. Below are some methods for LocalTime.of() and corresponding values range for each parameters.

  • LocalTime localTime= LocalTime.of(int hour, int minute) : Obtains an instance of LocalTime from an hour and minute.
  • LocalTime localTime= LocalTime.of(int hour, int minute, int second): Obtains an instance of LocalTime from an hour, minute and second.
  • LocalTime localTime= LocalTime.of(int hour, int minute, int second, int nanoOfSecond): Obtains an instance of LocalTime from an hour, minute, second and nanosecond.

Date and Time Allowed range:

  • Month : 0-12
  • Day : 

1-31 : (January, March, May, July, August, October, December)

1-28/29 : (February) Leap year have 29 days in February and Non leap year have 28 days

1-30: (April, June, September, November)

  • Hour: 0-23
  • Minute: 0-59
  • Second : 0 – 59
  • NanoSecond: 0 – 999999999

Issues Solution

For more other JAVA/JDBC issues solution follow link JAVA/JDBC Issues.