Class ISO8601Utils
java.lang.Object
com.google.gson.internal.bind.util.ISO8601Utils
Utilities methods for manipulating dates in iso8601 format. This is much faster and GC friendly
than using SimpleDateFormat so highly suitable if you (un)serialize lots of date objects.
Supported parse format: [yyyy-MM-dd|yyyyMMdd][T(hh:mm[:ss[.sss]]|hhmm[ss[.sss]])]?[Z|[+-]hh[:]mm]]
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static boolean
checkOffset
(String value, int offset, char expected) Check if the expected character exist at the given offset in the value.static String
Format a date into 'yyyy-MM-ddThh:mm:ssZ' (default timezone, no milliseconds precision)static String
Format a date into 'yyyy-MM-ddThh:mm:ss[.sss]Z' (GMT timezone)static String
Format date into yyyy-MM-ddThh:mm:ss[.sss][Z|[+-]hh:mm]private static int
indexOfNonDigit
(String string, int offset) Returns the index of the first character in the string that is not a digit, starting at offset.private static void
padInt
(StringBuilder buffer, int value, int length) Zero pad a number to a specified lengthstatic Date
parse
(String date, ParsePosition pos) Parse a date from ISO-8601 formatted string.private static int
Parse an integer located between 2 given offsets in a string
-
Field Details
-
UTC_ID
ID to represent the 'UTC' string, default timezone since Jackson 2.7- Since:
- 2.7
- See Also:
-
TIMEZONE_UTC
The UTC timezone, prefetched to avoid more lookups.- Since:
- 2.7
-
-
Constructor Details
-
ISO8601Utils
private ISO8601Utils()
-
-
Method Details
-
format
Format a date into 'yyyy-MM-ddThh:mm:ssZ' (default timezone, no milliseconds precision)- Parameters:
date
- the date to format- Returns:
- the date formatted as 'yyyy-MM-ddThh:mm:ssZ'
-
format
Format a date into 'yyyy-MM-ddThh:mm:ss[.sss]Z' (GMT timezone)- Parameters:
date
- the date to formatmillis
- true to include millis precision otherwise false- Returns:
- the date formatted as 'yyyy-MM-ddThh:mm:ss[.sss]Z'
-
format
Format date into yyyy-MM-ddThh:mm:ss[.sss][Z|[+-]hh:mm]- Parameters:
date
- the date to formatmillis
- true to include millis precision otherwise falsetz
- timezone to use for the formatting (UTC will produce 'Z')- Returns:
- the date formatted as yyyy-MM-ddThh:mm:ss[.sss][Z|[+-]hh:mm]
-
parse
Parse a date from ISO-8601 formatted string. It expects a format [yyyy-MM-dd|yyyyMMdd][T(hh:mm[:ss[.sss]]|hhmm[ss[.sss]])]?[Z|[+-]hh[:mm]]]- Parameters:
date
- ISO string to parse in the appropriate format.pos
- The position to start parsing from, updated to where parsing stopped.- Returns:
- the parsed date
- Throws:
ParseException
- if the date is not in the appropriate format
-
checkOffset
Check if the expected character exist at the given offset in the value.- Parameters:
value
- the string to check at the specified offsetoffset
- the offset to look for the expected characterexpected
- the expected character- Returns:
- true if the expected character exist at the given offset
-
parseInt
private static int parseInt(String value, int beginIndex, int endIndex) throws NumberFormatException Parse an integer located between 2 given offsets in a string- Parameters:
value
- the string to parsebeginIndex
- the start index for the integer in the stringendIndex
- the end index for the integer in the string- Returns:
- the int
- Throws:
NumberFormatException
- if the value is not a number
-
padInt
Zero pad a number to a specified length- Parameters:
buffer
- buffer to use for paddingvalue
- the integer value to pad if necessary.length
- the length of the string we should zero pad
-
indexOfNonDigit
Returns the index of the first character in the string that is not a digit, starting at offset.
-