public class DateTimeUtils extends Object
Used by the JDBC driver.
TODO: review methods for performance. Due to allocations required, it may be preferable to introduce a "formatter" with the required state.
| Modifier and Type | Class and Description |
|---|---|
private static class |
DateTimeUtils.NoopOffsetDateTimeHandler
Implementation of
OffsetDateTimeHandler for environments where
no instances are possible. |
private static interface |
DateTimeUtils.OffsetDateTimeHandler
Deals with values of
java.time.OffsetDateTime without introducing
a compile-time dependency (because OffsetDateTime is only JDK 8 and
higher). |
static class |
DateTimeUtils.PrecisionTime
|
private static class |
DateTimeUtils.ReflectiveOffsetDateTimeHandler
Implementation of
OffsetDateTimeHandler for environments where
no instances are possible. |
| Modifier and Type | Field and Description |
|---|---|
static String |
DATE_FORMAT_STRING
The SimpleDateFormat string for ISO dates, "yyyy-MM-dd".
|
static TimeZone |
DEFAULT_ZONE
The Java default time zone.
|
static int |
EPOCH_JULIAN
The julian date of the epoch, 1970-01-01.
|
static TimeZone |
GMT_ZONE
Deprecated.
Use
UTC_ZONE |
static long |
MILLIS_PER_DAY
The number of milliseconds in a day.
|
static long |
MILLIS_PER_HOUR
The number of milliseconds in an hour.
|
static long |
MILLIS_PER_MINUTE
The number of milliseconds in a minute.
|
static long |
MILLIS_PER_SECOND
The number of milliseconds in a second.
|
private static DateTimeUtils.OffsetDateTimeHandler |
OFFSET_DATE_TIME_HANDLER |
static long |
SECONDS_PER_DAY
The number of seconds in a day.
|
static String |
TIME_FORMAT_STRING
The SimpleDateFormat string for ISO times, "HH:mm:ss".
|
static String |
TIMESTAMP_FORMAT_STRING
The SimpleDateFormat string for ISO timestamps, "yyyy-MM-dd HH:mm:ss".
|
static TimeZone |
UTC_ZONE
The UTC time zone.
|
static Calendar |
ZERO_CALENDAR
Calendar set to the epoch (1970-01-01 00:00:00 UTC).
|
| Modifier | Constructor and Description |
|---|---|
private |
DateTimeUtils() |
| Modifier and Type | Method and Description |
|---|---|
static int |
addMonths(int date,
int m)
Adds a given number of months to a date, represented as the number of
days since the epoch.
|
static long |
addMonths(long timestamp,
int m)
Adds a given number of months to a timestamp, represented as the number
of milliseconds since the epoch.
|
static Calendar |
calendar()
Creates an instance of
Calendar in the root locale and UTC time
zone. |
static void |
checkDateFormat(String pattern)
Checks if the date/time format is valid
|
static int |
dateStringToUnixDate(String s) |
static int |
digitCount(int v) |
private static long |
firstMondayOfFirstWeek(int year)
Returns the first day of the first week of a year.
|
static long |
floorDiv(long x,
long y)
Divide, rounding towards negative infinity.
|
static long |
floorMod(long x,
long y)
Modulo, always returning a non-negative result.
|
private static void |
fraction(StringBuilder buf,
int scale,
long ms) |
private static int |
getIso8601WeekNumber(int julian,
int year,
int month,
int day)
Returns the ISO-8601 week number based on year, month, day.
|
static TimeZone |
getTimeZone(Calendar cal)
Gets the active time zone based on a Calendar argument
|
private static void |
int2(StringBuilder buf,
int i) |
private static void |
int4(StringBuilder buf,
int i) |
static String |
intervalDayTimeToString(long v,
TimeUnitRange range,
int scale) |
static String |
intervalYearMonthToString(int v,
TimeUnitRange range) |
static boolean |
isOffsetDateTime(Object o)
Returns whether a value is an
OffsetDateTime. |
private static int |
julianDateFloor(TimeUnitRange range,
int julian,
boolean floor) |
private static int |
julianExtract(TimeUnitRange range,
int julian) |
private static void |
julianToString(StringBuilder buf,
int julian) |
private static int |
lastDay(int y,
int m) |
static SimpleDateFormat |
newDateFormat(String format)
Creates a new date formatter with Farrago specific options.
|
static StringBuilder |
number(StringBuilder buf,
int v,
int n) |
static String |
offsetDateTimeValue(Object o)
Returns the value of a
OffsetDateTime as a string. |
static Calendar |
parseDateFormat(String s,
DateFormat dateFormat,
TimeZone tz)
Parses a string using
SimpleDateFormat and a given pattern. |
private static Calendar |
parseDateFormat(String s,
DateFormat dateFormat,
TimeZone tz,
ParsePosition pp)
Parses a string using
SimpleDateFormat and a given pattern. |
static Calendar |
parseDateFormat(String s,
String pattern,
TimeZone tz)
Deprecated.
|
private static int |
parseFraction(String v,
int multiplier)
Parses a fraction, multiplying the first character by
multiplier,
the second character by multiplier / 10,
the third character by multiplier / 100, and so forth. |
static DateTimeUtils.PrecisionTime |
parsePrecisionDateTimeLiteral(String s,
DateFormat dateFormat,
TimeZone tz,
int maxPrecision)
Parses a string using
SimpleDateFormat and a given pattern, and
if present, parses a fractional seconds component. |
static DateTimeUtils.PrecisionTime |
parsePrecisionDateTimeLiteral(String s,
String pattern,
TimeZone tz)
Deprecated.
|
static long |
powerX(long a,
long b)
Cheap, unsafe, long power.
|
static long |
resetDate(long timestamp)
Resets to epoch (1970-01-01) the "date" part of a timestamp.
|
static long |
resetTime(long timestamp)
Resets to zero the "time" part of a timestamp.
|
private static int |
roundUp(int dividend,
int divisor) |
private static long |
roundUp(long dividend,
long divisor)
Rounds a dividend to the nearest divisor.
|
static int |
subtractMonths(int date0,
int date1)
Finds the number of months between two dates, each represented as the
number of days since the epoch.
|
static int |
subtractMonths(long t0,
long t1) |
static long |
timestampStringToUnixDate(String s) |
static int |
timeStringToUnixDate(String v) |
static int |
timeStringToUnixDate(String v,
int start) |
static long |
unixDateCeil(TimeUnitRange range,
long date) |
static long |
unixDateExtract(TimeUnitRange range,
long date) |
static long |
unixDateFloor(TimeUnitRange range,
long date) |
static String |
unixDateToString(int date)
Helper for CAST({date} AS VARCHAR(n)).
|
private static void |
unixDateToString(StringBuilder buf,
int date) |
static int |
unixTimeExtract(TimeUnitRange range,
int time)
Extracts a time unit from a time value (milliseconds since midnight).
|
static long |
unixTimestamp(int year,
int month,
int day,
int hour,
int minute,
int second) |
static long |
unixTimestampCeil(TimeUnitRange range,
long timestamp) |
static int |
unixTimestampExtract(TimeUnitRange range,
long timestamp)
Extracts a time unit from a UNIX date (milliseconds since epoch).
|
static long |
unixTimestampFloor(TimeUnitRange range,
long timestamp) |
static String |
unixTimestampToString(long timestamp)
Helper for CAST({timestamp} AS VARCHAR(n)).
|
static String |
unixTimestampToString(long timestamp,
int precision) |
static String |
unixTimeToString(int time)
Helper for CAST({timestamp} AS VARCHAR(n)).
|
static String |
unixTimeToString(int time,
int precision) |
private static void |
unixTimeToString(StringBuilder buf,
int time,
int precision) |
static int |
ymdToJulian(int year,
int month,
int day) |
static int |
ymdToUnixDate(int year,
int month,
int day) |
public static final int EPOCH_JULIAN
public static final String DATE_FORMAT_STRING
public static final String TIME_FORMAT_STRING
public static final String TIMESTAMP_FORMAT_STRING
@Deprecated public static final TimeZone GMT_ZONE
UTC_ZONEpublic static final TimeZone UTC_ZONE
public static final TimeZone DEFAULT_ZONE
public static final long MILLIS_PER_SECOND
public static final long MILLIS_PER_MINUTE
public static final long MILLIS_PER_HOUR
public static final long MILLIS_PER_DAY
This is the modulo 'mask' used when converting TIMESTAMP values to DATE and TIME values.
public static final long SECONDS_PER_DAY
public static final Calendar ZERO_CALENDAR
private static final DateTimeUtils.OffsetDateTimeHandler OFFSET_DATE_TIME_HANDLER
private static Calendar parseDateFormat(String s, DateFormat dateFormat, TimeZone tz, ParsePosition pp)
SimpleDateFormat and a given pattern. This
method parses a string at the specified parse position and if successful,
updates the parse position to the index after the last character used.
The parsing is strict and requires months to be less than 12, days to be
less than 31, etc.s - string to be parseddateFormat - Date formattz - time zone in which to interpret string. Defaults to the Java
default time zonepp - position to start parsing from@Deprecated public static Calendar parseDateFormat(String s, String pattern, TimeZone tz)
public static Calendar parseDateFormat(String s, DateFormat dateFormat, TimeZone tz)
SimpleDateFormat and a given pattern. The
entire string must match the pattern specified.s - string to be parseddateFormat - Date formattz - time zone in which to interpret string. Defaults to the Java
default time zone@Deprecated public static DateTimeUtils.PrecisionTime parsePrecisionDateTimeLiteral(String s, String pattern, TimeZone tz)
public static DateTimeUtils.PrecisionTime parsePrecisionDateTimeLiteral(String s, DateFormat dateFormat, TimeZone tz, int maxPrecision)
SimpleDateFormat and a given pattern, and
if present, parses a fractional seconds component. The fractional seconds
component must begin with a decimal point ('.') followed by numeric
digits. The precision is rounded to a maximum of 3 digits of fractional
seconds precision (to obtain milliseconds).s - string to be parseddateFormat - Date formattz - time zone in which to interpret string. Defaults to the
local time zonePrecisionTime initialized
with the parsed value, or null if parsing failed. The PrecisionTime
contains a GMT Calendar and a precision.public static TimeZone getTimeZone(Calendar cal)
public static void checkDateFormat(String pattern)
pattern - SimpleDateFormat patternIllegalArgumentException - if the given pattern is invalidpublic static SimpleDateFormat newDateFormat(String format)
format - SimpleDateFormat patternpublic static String unixTimestampToString(long timestamp)
public static String unixTimestampToString(long timestamp, int precision)
public static String unixTimeToString(int time)
public static String unixTimeToString(int time, int precision)
private static void unixTimeToString(StringBuilder buf, int time, int precision)
private static void int2(StringBuilder buf, int i)
private static void int4(StringBuilder buf, int i)
public static String unixDateToString(int date)
private static void unixDateToString(StringBuilder buf, int date)
private static void julianToString(StringBuilder buf, int julian)
public static String intervalYearMonthToString(int v, TimeUnitRange range)
public static StringBuilder number(StringBuilder buf, int v, int n)
public static int digitCount(int v)
private static int roundUp(int dividend,
int divisor)
public static long powerX(long a,
long b)
public static String intervalDayTimeToString(long v, TimeUnitRange range, int scale)
private static long roundUp(long dividend,
long divisor)
dividend - Number to be divideddivisor - Number to divide byprivate static void fraction(StringBuilder buf, int scale, long ms)
public static int dateStringToUnixDate(String s)
public static int timeStringToUnixDate(String v)
public static int timeStringToUnixDate(String v, int start)
private static int parseFraction(String v, int multiplier)
multiplier,
the second character by multiplier / 10,
the third character by multiplier / 100, and so forth.
For example, parseFraction("1234", 100) yields 123.
public static long timestampStringToUnixDate(String s)
public static long unixDateExtract(TimeUnitRange range, long date)
private static int julianExtract(TimeUnitRange range, int julian)
private static long firstMondayOfFirstWeek(int year)
private static int getIso8601WeekNumber(int julian,
int year,
int month,
int day)
public static int unixTimestampExtract(TimeUnitRange range, long timestamp)
public static int unixTimeExtract(TimeUnitRange range, int time)
public static long resetTime(long timestamp)
public static long resetDate(long timestamp)
public static long unixTimestampFloor(TimeUnitRange range, long timestamp)
public static long unixDateFloor(TimeUnitRange range, long date)
public static long unixTimestampCeil(TimeUnitRange range, long timestamp)
public static long unixDateCeil(TimeUnitRange range, long date)
private static int julianDateFloor(TimeUnitRange range, int julian, boolean floor)
public static int ymdToUnixDate(int year,
int month,
int day)
public static int ymdToJulian(int year,
int month,
int day)
public static long unixTimestamp(int year,
int month,
int day,
int hour,
int minute,
int second)
public static long addMonths(long timestamp,
int m)
public static int addMonths(int date,
int m)
private static int lastDay(int y,
int m)
public static int subtractMonths(int date0,
int date1)
public static int subtractMonths(long t0,
long t1)
public static long floorDiv(long x,
long y)
public static long floorMod(long x,
long y)
public static Calendar calendar()
Calendar in the root locale and UTC time
zone.public static boolean isOffsetDateTime(Object o)
OffsetDateTime.Copyright © 2012–2018 The Apache Software Foundation. All rights reserved.