Class DateUtils

java.lang.Object
ca.uhn.fhir.util.DateUtils

public final class DateUtils extends Object
A utility class for parsing and formatting HTTP dates as used in cookies and other headers. This class handles dates as defined by RFC 2616 section 3.3.1 as well as some other common non-standard formats.

This class is basically intended to be a high-performance workaround for the fact that Java SimpleDateFormat is kind of expensive to create and yet isn't thread safe.

This class was adapted from the class with the same name from the Jetty project, licensed under the terms of the Apache Software License 2.0.

  • Field Details

  • Method Details

    • extractLocalDateTimeForRangeStartOrEmpty

      Calculate a LocalDateTime with any missing date/time data points defaulting to the earliest values (ex 0 for hour) from a TemporalAccessor or empty if it doesn't contain a year.
      Parameters:
      theTemporalAccessor - The TemporalAccessor containing date/time information
      Returns:
      A LocalDateTime or empty
    • extractLocalDateTimeForRangeEndOrEmpty

      Calculate a LocalDateTime with any missing date/time data points defaulting to the latest values (ex 23 for hour) from a TemporalAccessor or empty if it doesn't contain a year.
      Parameters:
      theTemporalAccessor - The TemporalAccessor containing date/time information
      Returns:
      A LocalDateTime or empty
    • parseDateTimeStringIfValid

      public static Optional<TemporalAccessor> parseDateTimeStringIfValid(String theDateTimeString, DateTimeFormatter theSupportedDateTimeFormatter)
      With the provided DateTimeFormatter, parse a date time String or return empty if the String doesn't correspond to the formatter.
      Parameters:
      theDateTimeString - A date/time String in some date format
      theSupportedDateTimeFormatter - The DateTimeFormatter we expect corresponds to the String
      Returns:
      The parsed TemporalAccessor or empty
    • parseDate

      public static Date parseDate(String theDateValue)
      Parses a date value. The formats used for parsing the date value are retrieved from the default http params.
      Parameters:
      theDateValue - the date value to parse
      Returns:
      the parsed date or null if input could not be parsed
    • getHighestInstantFromDate

      public static Date getHighestInstantFromDate(Date theDateValue)
    • getLowestInstantFromDate

      public static Date getLowestInstantFromDate(Date theDateValue)
    • convertDateToDayInteger

      public static int convertDateToDayInteger(Date theDateValue)
    • convertDateToIso8601String

      public static String convertDateToIso8601String(Date theDateValue)
    • formatDate

      public static String formatDate(Date date)
      Formats the given date according to the RFC 1123 pattern.
      Parameters:
      date - The date to format.
      Returns:
      An RFC 1123 formatted date string.
      See Also:
    • notNull

      public static <T> T notNull(T argument, String name)
    • getCompletedDate

      public static org.apache.commons.lang3.tuple.Pair<String,String> getCompletedDate(String theIncompleteDateStr)
      Convert an incomplete date e.g. 2020 or 2020-01 to a complete date with lower bound to the first day of the year/month, and upper bound to the last day of the year/month e.g. 2020 to 2020-01-01 (left), 2020-12-31 (right) 2020-02 to 2020-02-01 (left), 2020-02-29 (right)
      Parameters:
      theIncompleteDateStr - 2020 or 2020-01
      Returns:
      a pair of complete date, left is lower bound, and right is upper bound
    • getEndOfDay

      public static Date getEndOfDay(Date theDate)