Class TimestampUtils


  • public class TimestampUtils
    extends java.lang.Object
    Misc utils for handling time and date values.
    • Constructor Summary

      Constructors 
      Constructor Description
      TimestampUtils​(boolean usesDouble, Provider<java.util.TimeZone> timeZoneProvider)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      java.sql.Date convertToDate​(long millis, java.util.TimeZone tz)
      Extracts the date part from a timestamp.
      java.sql.Time convertToTime​(long millis, java.util.TimeZone tz)
      Extracts the time part from a timestamp.
      java.util.Calendar getSharedCalendar​(java.util.TimeZone timeZone)
      Get a shared calendar, applying the supplied time zone or the default time zone if null.
      boolean hasFastDefaultTimeZone()  
      static java.util.TimeZone parseBackendTimeZone​(java.lang.String timeZone)
      Converts backend's TimeZone parameter to java format.
      java.lang.String timeToString​(java.util.Date time, boolean withTimeZone)
      Returns the given time value as String matching what the current postgresql server would send in text mode.
      void toBinDate​(java.util.TimeZone tz, byte[] bytes, java.sql.Date value)
      Converts the SQL Date to binary representation for Oid.DATE.
      java.sql.Date toDate​(java.util.Calendar cal, java.lang.String s)  
      java.sql.Date toDateBin​(java.util.TimeZone tz, byte[] bytes)
      Returns the SQL Date object matching the given bytes with Oid.DATE.
      java.time.LocalDate toLocalDateBin​(byte[] bytes)
      Returns the local date time object matching the given bytes with Oid.DATE or Oid.TIMESTAMP.
      java.time.LocalDateTime toLocalDateTime​(java.lang.String s)
      Parse a string and return a LocalDateTime representing its value.
      java.time.LocalDateTime toLocalDateTimeBin​(byte[] bytes)
      Returns the local date time object matching the given bytes with Oid.TIMESTAMP or Oid.TIMESTAMPTZ.
      java.time.LocalTime toLocalTime​(java.lang.String s)
      Parse a string and return a LocalTime representing its value.
      java.time.LocalTime toLocalTimeBin​(byte[] bytes)
      Returns the SQL Time object matching the given bytes with Oid.TIME.
      java.time.OffsetDateTime toOffsetDateTime​(java.lang.String s)
      Parse a string and return a OffsetDateTime representing its value.
      java.time.OffsetDateTime toOffsetDateTime​(java.sql.Time t)
      Deprecated.
      was used internally, and not used anymore
      java.time.OffsetDateTime toOffsetDateTimeBin​(byte[] bytes)
      Returns the offset date time object matching the given bytes with Oid#TIMESTAMPTZ.
      java.time.OffsetTime toOffsetTime​(java.lang.String s)
      Parse a string and return a OffsetTime representing its value.
      java.time.OffsetTime toOffsetTimeBin​(byte[] bytes)
      Returns the offset time object matching the given bytes with Oid#TIMETZ or Oid#TIME.
      java.lang.String toString​(java.time.LocalDate localDate)  
      java.lang.String toString​(java.time.LocalDateTime localDateTime)
      Formats LocalDateTime to be sent to the backend, thus it adds time zone.
      java.lang.String toString​(java.time.LocalTime localTime)  
      java.lang.String toString​(java.time.OffsetDateTime offsetDateTime)  
      java.lang.String toString​(java.time.OffsetTime offsetTime)  
      java.lang.String toString​(java.util.Calendar cal, java.sql.Date x)  
      java.lang.String toString​(java.util.Calendar cal, java.sql.Date x, boolean withTimeZone)  
      java.lang.String toString​(java.util.Calendar cal, java.sql.Time x)  
      java.lang.String toString​(java.util.Calendar cal, java.sql.Time x, boolean withTimeZone)  
      java.lang.String toString​(java.util.Calendar cal, java.sql.Timestamp x)  
      java.lang.String toString​(java.util.Calendar cal, java.sql.Timestamp x, boolean withTimeZone)  
      java.lang.String toStringOffsetDateTime​(byte[] value)
      Converts timestamptz to string taking client time zone (timeZoneProvider) into account.
      java.lang.String toStringOffsetTimeBin​(byte[] value)
      Converts timetz to string taking client time zone (timeZoneProvider) into account.
      java.sql.Time toTime​(java.util.Calendar cal, java.lang.String s)  
      java.sql.Time toTimeBin​(java.util.TimeZone tz, byte[] bytes)
      Returns the SQL Time object matching the given bytes with Oid.TIME or Oid.TIMETZ.
      java.sql.Timestamp toTimestamp​(java.util.Calendar cal, java.lang.String s)
      Parse a string and return a timestamp representing its value.
      java.sql.Timestamp toTimestampBin​(java.util.TimeZone tz, byte[] bytes, boolean timestamptz)
      Returns the SQL Timestamp object matching the given bytes with Oid.TIMESTAMP or Oid.TIMESTAMPTZ.
      java.time.OffsetDateTime withClientOffsetSameInstant​(java.time.OffsetDateTime input)
      PostgreSQL does not store the time zone in the binary representation of timestamptz.
      java.time.OffsetTime withClientOffsetSameInstant​(java.time.OffsetTime input)
      PostgreSQL does not store the time zone in the binary representation of timetz.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • TimestampUtils

        public TimestampUtils​(boolean usesDouble,
                              Provider<java.util.TimeZone> timeZoneProvider)
    • Method Detail

      • toTimestamp

        public java.sql.Timestamp toTimestamp​(java.util.Calendar cal,
                                              java.lang.String s)
                                       throws java.sql.SQLException
        Parse a string and return a timestamp representing its value.
        Parameters:
        cal - calendar to be used to parse the input string
        s - The ISO formated date string to parse.
        Returns:
        null if s is null or a timestamp of the parsed string s.
        Throws:
        java.sql.SQLException - if there is a problem parsing s.
      • toLocalTime

        public java.time.LocalTime toLocalTime​(java.lang.String s)
                                        throws java.sql.SQLException
        Parse a string and return a LocalTime representing its value.
        Parameters:
        s - The ISO formated time string to parse.
        Returns:
        null if s is null or a LocalTime of the parsed string s.
        Throws:
        java.sql.SQLException - if there is a problem parsing s.
      • toOffsetTimeBin

        public java.time.OffsetTime toOffsetTimeBin​(byte[] bytes)
                                             throws PSQLException
        Returns the offset time object matching the given bytes with Oid#TIMETZ or Oid#TIME.
        Parameters:
        bytes - The binary encoded TIMETZ/TIME value.
        Returns:
        The parsed offset time object.
        Throws:
        PSQLException - If binary format could not be parsed.
      • toOffsetTime

        public java.time.OffsetTime toOffsetTime​(java.lang.String s)
                                          throws java.sql.SQLException
        Parse a string and return a OffsetTime representing its value.
        Parameters:
        s - The ISO formated time string to parse.
        Returns:
        null if s is null or a OffsetTime of the parsed string s.
        Throws:
        java.sql.SQLException - if there is a problem parsing s.
      • toLocalDateTime

        public java.time.LocalDateTime toLocalDateTime​(java.lang.String s)
                                                throws java.sql.SQLException
        Parse a string and return a LocalDateTime representing its value.
        Parameters:
        s - The ISO formated date string to parse.
        Returns:
        null if s is null or a LocalDateTime of the parsed string s.
        Throws:
        java.sql.SQLException - if there is a problem parsing s.
      • toOffsetDateTime

        @Deprecated
        public java.time.OffsetDateTime toOffsetDateTime​(java.sql.Time t)
        Deprecated.
        was used internally, and not used anymore
        Returns the offset date time object matching the given bytes with Oid#TIMETZ. Not used internally anymore, function is here to retain compatibility with previous versions
        Parameters:
        t - the time value
        Returns:
        the matching offset date time
      • toOffsetDateTime

        public java.time.OffsetDateTime toOffsetDateTime​(java.lang.String s)
                                                  throws java.sql.SQLException
        Parse a string and return a OffsetDateTime representing its value.
        Parameters:
        s - The ISO formatted date string to parse.
        Returns:
        null if s is null or a OffsetDateTime of the parsed string s.
        Throws:
        java.sql.SQLException - if there is a problem parsing s.
      • toOffsetDateTimeBin

        public java.time.OffsetDateTime toOffsetDateTimeBin​(byte[] bytes)
                                                     throws PSQLException
        Returns the offset date time object matching the given bytes with Oid#TIMESTAMPTZ.
        Parameters:
        bytes - The binary encoded local date time value.
        Returns:
        The parsed local date time object.
        Throws:
        PSQLException - If binary format could not be parsed.
      • toTime

        public java.sql.Time toTime​(java.util.Calendar cal,
                                    java.lang.String s)
                             throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • toDate

        public java.sql.Date toDate​(java.util.Calendar cal,
                                    java.lang.String s)
                             throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getSharedCalendar

        public java.util.Calendar getSharedCalendar​(java.util.TimeZone timeZone)
        Get a shared calendar, applying the supplied time zone or the default time zone if null.
        Parameters:
        timeZone - time zone to be set for the calendar
        Returns:
        The shared calendar.
      • toString

        public java.lang.String toString​(java.util.Calendar cal,
                                         java.sql.Timestamp x)
      • toString

        public java.lang.String toString​(java.util.Calendar cal,
                                         java.sql.Timestamp x,
                                         boolean withTimeZone)
      • toString

        public java.lang.String toString​(java.util.Calendar cal,
                                         java.sql.Date x)
      • toString

        public java.lang.String toString​(java.util.Calendar cal,
                                         java.sql.Date x,
                                         boolean withTimeZone)
      • toString

        public java.lang.String toString​(java.util.Calendar cal,
                                         java.sql.Time x)
      • toString

        public java.lang.String toString​(java.util.Calendar cal,
                                         java.sql.Time x,
                                         boolean withTimeZone)
      • toString

        public java.lang.String toString​(java.time.LocalDate localDate)
      • toString

        public java.lang.String toString​(java.time.LocalTime localTime)
      • toString

        public java.lang.String toString​(java.time.OffsetTime offsetTime)
      • toStringOffsetTimeBin

        public java.lang.String toStringOffsetTimeBin​(byte[] value)
                                               throws PSQLException
        Converts timetz to string taking client time zone (timeZoneProvider) into account.
        Parameters:
        value - binary representation of timetz
        Returns:
        string representation of timetz
        Throws:
        PSQLException
      • withClientOffsetSameInstant

        public java.time.OffsetTime withClientOffsetSameInstant​(java.time.OffsetTime input)
        PostgreSQL does not store the time zone in the binary representation of timetz. However, we want to preserve the output of getString() in both binary and text formats So we try a client time zone when serializing OffsetTime to string.
        Parameters:
        input - input offset time
        Returns:
        adjusted offset time (it represents the same instant as the input one)
      • toString

        public java.lang.String toString​(java.time.OffsetDateTime offsetDateTime)
      • toStringOffsetDateTime

        public java.lang.String toStringOffsetDateTime​(byte[] value)
                                                throws PSQLException
        Converts timestamptz to string taking client time zone (timeZoneProvider) into account.
        Parameters:
        value - binary representation of timestamptz
        Returns:
        string representation of timestamptz
        Throws:
        PSQLException
      • withClientOffsetSameInstant

        public java.time.OffsetDateTime withClientOffsetSameInstant​(java.time.OffsetDateTime input)
        PostgreSQL does not store the time zone in the binary representation of timestamptz. However, we want to preserve the output of getString() in both binary and text formats So we try a client time zone when serializing OffsetDateTime to string.
        Parameters:
        input - input offset date time
        Returns:
        adjusted offset date time (it represents the same instant as the input one)
      • toString

        public java.lang.String toString​(java.time.LocalDateTime localDateTime)
        Formats LocalDateTime to be sent to the backend, thus it adds time zone. Do not use this method in ResultSet.getString(int)
        Parameters:
        localDateTime - The local date to format as a String
        Returns:
        The formatted local date
      • toDateBin

        public java.sql.Date toDateBin​(java.util.TimeZone tz,
                                       byte[] bytes)
                                throws PSQLException
        Returns the SQL Date object matching the given bytes with Oid.DATE.
        Parameters:
        tz - The timezone used.
        bytes - The binary encoded date value.
        Returns:
        The parsed date object.
        Throws:
        PSQLException - If binary format could not be parsed.
      • hasFastDefaultTimeZone

        public boolean hasFastDefaultTimeZone()
      • toTimeBin

        public java.sql.Time toTimeBin​(java.util.TimeZone tz,
                                       byte[] bytes)
                                throws PSQLException
        Returns the SQL Time object matching the given bytes with Oid.TIME or Oid.TIMETZ.
        Parameters:
        tz - The timezone used when received data is Oid.TIME, ignored if data already contains Oid.TIMETZ.
        bytes - The binary encoded time value.
        Returns:
        The parsed time object.
        Throws:
        PSQLException - If binary format could not be parsed.
      • toLocalTimeBin

        public java.time.LocalTime toLocalTimeBin​(byte[] bytes)
                                           throws PSQLException
        Returns the SQL Time object matching the given bytes with Oid.TIME.
        Parameters:
        bytes - The binary encoded time value.
        Returns:
        The parsed time object.
        Throws:
        PSQLException - If binary format could not be parsed.
      • toTimestampBin

        public java.sql.Timestamp toTimestampBin​(java.util.TimeZone tz,
                                                 byte[] bytes,
                                                 boolean timestamptz)
                                          throws PSQLException
        Returns the SQL Timestamp object matching the given bytes with Oid.TIMESTAMP or Oid.TIMESTAMPTZ.
        Parameters:
        tz - The timezone used when received data is Oid.TIMESTAMP, ignored if data already contains Oid.TIMESTAMPTZ.
        bytes - The binary encoded timestamp value.
        timestamptz - True if the binary is in GMT.
        Returns:
        The parsed timestamp object.
        Throws:
        PSQLException - If binary format could not be parsed.
      • toLocalDateTimeBin

        public java.time.LocalDateTime toLocalDateTimeBin​(byte[] bytes)
                                                   throws PSQLException
        Returns the local date time object matching the given bytes with Oid.TIMESTAMP or Oid.TIMESTAMPTZ.
        Parameters:
        bytes - The binary encoded local date time value.
        Returns:
        The parsed local date time object.
        Throws:
        PSQLException - If binary format could not be parsed.
      • toLocalDateBin

        public java.time.LocalDate toLocalDateBin​(byte[] bytes)
                                           throws PSQLException
        Returns the local date time object matching the given bytes with Oid.DATE or Oid.TIMESTAMP.
        Parameters:
        bytes - The binary encoded local date value.
        Returns:
        The parsed local date object.
        Throws:
        PSQLException - If binary format could not be parsed.
      • convertToDate

        public java.sql.Date convertToDate​(long millis,
                                           java.util.TimeZone tz)
        Extracts the date part from a timestamp.
        Parameters:
        millis - The timestamp from which to extract the date.
        tz - The time zone of the date.
        Returns:
        The extracted date.
      • convertToTime

        public java.sql.Time convertToTime​(long millis,
                                           java.util.TimeZone tz)
        Extracts the time part from a timestamp. This method ensures the date part of output timestamp looks like 1970-01-01 in given timezone.
        Parameters:
        millis - The timestamp from which to extract the time.
        tz - timezone to use.
        Returns:
        The extracted time.
      • timeToString

        public java.lang.String timeToString​(java.util.Date time,
                                             boolean withTimeZone)
        Returns the given time value as String matching what the current postgresql server would send in text mode.
        Parameters:
        time - time value
        withTimeZone - whether timezone should be added
        Returns:
        given time value as String
      • toBinDate

        public void toBinDate​(java.util.TimeZone tz,
                              byte[] bytes,
                              java.sql.Date value)
                       throws PSQLException
        Converts the SQL Date to binary representation for Oid.DATE.
        Parameters:
        tz - The timezone used.
        bytes - The binary encoded date value.
        value - value
        Throws:
        PSQLException - If binary format could not be parsed.
      • parseBackendTimeZone

        public static java.util.TimeZone parseBackendTimeZone​(java.lang.String timeZone)
        Converts backend's TimeZone parameter to java format. Notable difference: backend's gmt-3 is GMT+03 in Java.
        Parameters:
        timeZone - time zone to use
        Returns:
        java TimeZone