Class DateUtils

java.lang.Object
org.archive.util.DateUtils

public class DateUtils extends Object
  • Field Details

    • VERSION

      public static final String VERSION
      See Also:
    • MAX_INT_CHAR_WIDTH

      public static int MAX_INT_CHAR_WIDTH
  • Constructor Details

    • DateUtils

      public DateUtils()
  • Method Details

    • getRFC1123Date

      public static String getRFC1123Date(Date date)
      Utility function for creating HTTP header style date strings, specifically, RFC 1123: EEE, dd MMM yyyy HH:mm:ss z. Date stamps are in the UTC time zone
      Returns:
      the date stamp
    • get17DigitDate

      public static String get17DigitDate()
      Utility function for creating arc-style date stamps in the format yyyMMddHHmmssSSS. Date stamps are in the UTC time zone
      Returns:
      the date stamp for NOW
    • get17DigitDate

      public static String get17DigitDate(long date)
      Utility function for creating warc-style date stamps in the format yyyyMMddHHmmssSSS. Date stamps are in the UTC time zone
      Parameters:
      date - milliseconds since epoc
      Returns:
      the date stamp
    • get17DigitDate

      public static String get17DigitDate(Date date)
      Utility function for creating warc-style date stamps in the format yyyyMMddHHmmssSSS. Date stamps are in the UTC time zone
      Parameters:
      date - Date object
      Returns:
      the date stamp
    • get14DigitDate

      public static String get14DigitDate()
      Utility function for creating arc-style date stamps in the format yyyyMMddHHmmss. Date stamps are in the UTC time zone
      Returns:
      the date stamp for NOW
    • get14DigitDate

      public static String get14DigitDate(long date)
      Utility function for creating arc-style date stamps in the format yyyyMMddHHmmss. Date stamps are in the UTC time zone
      Parameters:
      date - milliseconds since epoc
      Returns:
      the date stamp
    • get14DigitDate

      public static String get14DigitDate(Date d)
      Utility function for creating arc-style date stamps in the format yyyyMMddHHmmss. Date stamps are in the UTC time zone
      Parameters:
      d - Date for timestamp
      Returns:
      the date stamp
    • get12DigitDate

      public static String get12DigitDate()
      Utility function for creating 12-digit(no seconds!) date stamps in the format yyyyMMddHHmm. Date stamps are in the UTC time zone
      Returns:
      the date stamp for NOW
    • get12DigitDate

      public static String get12DigitDate(long date)
      Utility function for creating 12-digit(no seconds!) date stamps in the format yyyyMMddHHmm. Date stamps are in the UTC time zone
      Parameters:
      date - milliseconds since epoc
      Returns:
      the date stamp
    • get12DigitDate

      public static String get12DigitDate(Date d)
      Utility function for creating 12-digit(no seconds!) date stamps in the format yyyyMMddHHmm. Date stamps are in the UTC time zone
      Parameters:
      d - Date object to format
      Returns:
      the date stamp
    • getLog17Date

      public static String getLog17Date()
      Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC. Use current time. Format is yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
      Returns:
      the date stamp for NOW
    • getLog17Date

      public static String getLog17Date(long date)
      Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC. Format is yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
      Parameters:
      date - milliseconds since epoc.
      Returns:
      the date stamp
    • getLog17Date

      public static String getLog17Date(Date date)
      Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC. Format is yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
      Parameters:
      date - Date to format.
      Returns:
      the date stamp
    • getLog14Date

      public static String getLog14Date()
      Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC. Use current time. Format is yyyy-MM-dd'T'HH:mm:ss'Z'
      Returns:
      the date stamp for NOW
    • getLog14Date

      public static String getLog14Date(long date)
      Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC. Format is yyyy-MM-dd'T'HH:mm:ss'Z'
      Parameters:
      date - long timestamp to format.
      Returns:
      the date stamp
    • getLog14Date

      public static String getLog14Date(Date date)
      Utility function for creating log timestamps, in W3C/ISO8601 format, assuming UTC. Format is yyyy-MM-dd'T'HH:mm:ss'Z'
      Parameters:
      date - Date to format.
      Returns:
      the date stamp
    • getDate

      public static Date getDate(String d) throws ParseException
      Parses an ARC-style date. If passed String is < 12 characters in length, we pad. At a minimum, String should contain a year (>=4 characters). Parse will also fail if day or month are incompletely specified. Depends on the above getXXDigitDate methods.
      Parameters:
      d - A 4-17 digit date in ARC style (yyyy to yyyyMMddHHmmssSSS) formatting.
      Returns:
      A Date object representing the passed String.
      Throws:
      ParseException
    • parse17DigitDate

      public static Date parse17DigitDate(String date) throws ParseException
      Utility function for parsing arc-style date stamps in the format yyyMMddHHmmssSSS. Date stamps are in the UTC time zone. The whole string will not be parsed, only the first 17 digits.
      Parameters:
      date - an arc-style formatted date stamp
      Returns:
      the Date corresponding to the date stamp string
      Throws:
      ParseException - if the inputstring was malformed
    • parse14DigitDate

      public static Date parse14DigitDate(String date) throws ParseException
      Utility function for parsing arc-style date stamps in the format yyyMMddHHmmss. Date stamps are in the UTC time zone. The whole string will not be parsed, only the first 14 digits.
      Parameters:
      date - an arc-style formatted date stamp
      Returns:
      the Date corresponding to the date stamp string
      Throws:
      ParseException - if the inputstring was malformed
    • parse12DigitDate

      public static Date parse12DigitDate(String date) throws ParseException
      Utility function for parsing arc-style date stamps in the format yyyMMddHHmm. Date stamps are in the UTC time zone. The whole string will not be parsed, only the first 12 digits.
      Parameters:
      date - an arc-style formatted date stamp
      Returns:
      the Date corresponding to the date stamp string
      Throws:
      ParseException - if the inputstring was malformed
    • secondsSinceEpoch

      public static String secondsSinceEpoch(String timestamp) throws ParseException
      Parameters:
      timestamp - A 14-digit timestamp or the suffix for a 14-digit timestamp: E.g. '20010909014640' or '20010101' or '1970'.
      Returns:
      Seconds since the epoch as a string zero-pre-padded so always Integer.MAX_VALUE wide (Makes it so sorting of resultant string works properly).
      Throws:
      ParseException
    • getSecondsSinceEpoch

      public static Date getSecondsSinceEpoch(String timestamp) throws ParseException
      Parameters:
      timestamp - A 14-digit timestamp or the suffix for a 14-digit timestamp: E.g. '20010909014640' or '20010101' or '1970'.
      Returns:
      A date.
      Throws:
      ParseException
      See Also:
    • zeroPadInteger

      public static String zeroPadInteger(int i)
      Parameters:
      i - Integer to add prefix of zeros too. If passed 2005, will return the String 0000002005. String width is the width of Integer.MAX_VALUE as a string (10 digits).
      Returns:
      Padded String version of i.
    • padTo

      public static String padTo(int i, int pad)
      Convert an int to a String, and pad it to pad spaces.
      Parameters:
      i - the int
      pad - the width to pad to.
      Returns:
      String w/ padding.
    • padTo

      public static String padTo(String s, int pad)
      Pad the given String to pad characters wide by pre-pending spaces. s should not be null. If s is already wider than pad no change is done.
      Parameters:
      s - the String to pad
      pad - the width to pad to.
      Returns:
      String w/ padding.
    • padTo

      public static String padTo(String s, int pad, char padChar)
      Pad the given String to pad characters wide by pre-pending padChar. s should not be null. If s is already wider than pad no change is done.
      Parameters:
      s - the String to pad
      pad - the width to pad to.
      padChar - The pad character to use.
      Returns:
      String w/ padding.
    • byteArrayEquals

      public static boolean byteArrayEquals(byte[] lhs, byte[] rhs)
      check that two byte arrays are equal. They may be null.
      Parameters:
      lhs - a byte array
      rhs - another byte array.
      Returns:
      true if they are both equal (or both null)
    • doubleToString

      public static String doubleToString(double val, int maxFractionDigits)
      Converts a double to a string.
      Parameters:
      val - The double to convert
      maxFractionDigits - How many characters to include after '.'
      Returns:
      the double as a string.
    • formatBytesForDisplay

      public static String formatBytesForDisplay(long amount)
      Takes a byte size and formats it for display with 'friendly' units.

      This involves converting it to the largest unit (of B, KiB, MiB, GiB, TiB) for which the amount will be > 1.

      Additionally, at least 2 significant digits are always displayed.

      Negative numbers will be returned as '0 B'.

      Parameters:
      amount - the amount of bytes
      Returns:
      A string containing the amount, properly formated.
    • formatMillisecondsToConventional

      public static String formatMillisecondsToConventional(long time)
      Convert milliseconds value to a human-readable duration
      Parameters:
      time -
      Returns:
      Human readable string version of passed time
    • formatMillisecondsToConventional

      public static String formatMillisecondsToConventional(long duration, int unitCount)
      Convert milliseconds value to a human-readable duration of mixed units, using units no larger than days. For example, "5d12h13m12s113ms" or "19h51m".
      Parameters:
      duration -
      unitCount - how many significant units to show, at most for example, a value of 2 would show days+hours or hours+seconds but not hours+second+milliseconds
      Returns:
      Human readable string version of passed time
    • getUnique14DigitDate

      public static String getUnique14DigitDate()
      Utility function for creating UNIQUE-from-this-class arc-style date stamps in the format yyyMMddHHmmss. Rather than giving a duplicate datestamp on a subsequent call, will increment the seconds until a unique value is returned. Date stamps are in the UTC time zone
      Returns:
      the date stamp