Class DateTimeUtils
- java.lang.Object
-
- org.joda.time.DateTimeUtils
-
public class DateTimeUtils extends java.lang.Object
DateTimeUtils provide public utility methods for the date-time library.DateTimeUtils uses shared static variables which are declared as volatile for thread-safety. These can be changed during the lifetime of the application however doing so is generally a bad idea.
- Since:
- 1.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
DateTimeUtils.MillisProvider
A millisecond provider, allowing control of the system clock.
-
Field Summary
Fields Modifier and Type Field Description static DateTimeUtils.MillisProvider
SYSTEM_MILLIS_PROVIDER
The singleton instance of the system millisecond provider.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static long
currentTimeMillis()
Gets the current time in milliseconds.static long
fromJulianDay(double julianDay)
Creates a date-time from a Julian Day.static Chronology
getChronology(Chronology chrono)
Gets the chronology handling null.static java.text.DateFormatSymbols
getDateFormatSymbols(java.util.Locale locale)
Gets theDateFormatSymbols
based on the given locale.static java.util.Map<java.lang.String,DateTimeZone>
getDefaultTimeZoneNames()
Gets the default map of time zone names.static long
getDurationMillis(ReadableDuration duration)
Gets the millisecond duration from the specified duration object handling null.static Chronology
getInstantChronology(ReadableInstant instant)
Gets the chronology from the specified instant object handling null.static long
getInstantMillis(ReadableInstant instant)
Gets the millisecond instant from the specified instant object handling null.static Chronology
getIntervalChronology(ReadableInstant start, ReadableInstant end)
Gets the chronology from the specified instant based interval handling null.static Chronology
getIntervalChronology(ReadableInterval interval)
Gets the chronology from the specified interval object handling null.static PeriodType
getPeriodType(PeriodType type)
Gets the period type handling null.static ReadableInterval
getReadableInterval(ReadableInterval interval)
Gets the interval handling null.static DateTimeZone
getZone(DateTimeZone zone)
Gets the zone handling null.static boolean
isContiguous(ReadablePartial partial)
Checks whether the partial is contiguous.static void
setCurrentMillisFixed(long fixedMillis)
Sets the current time to return a fixed millisecond time.static void
setCurrentMillisOffset(long offsetMillis)
Sets the current time to return the system time plus an offset.static void
setCurrentMillisProvider(DateTimeUtils.MillisProvider millisProvider)
Sets the provider of the current time to class specified.static void
setCurrentMillisSystem()
Resets the current time to return the system time.static void
setDefaultTimeZoneNames(java.util.Map<java.lang.String,DateTimeZone> names)
Sets the default map of time zone names.static double
toJulianDay(long epochMillis)
Calculates the astronomical Julian Day for an instant.static long
toJulianDayNumber(long epochMillis)
Calculates the astronomical Julian Day Number for an instant.
-
-
-
Field Detail
-
SYSTEM_MILLIS_PROVIDER
public static final DateTimeUtils.MillisProvider SYSTEM_MILLIS_PROVIDER
The singleton instance of the system millisecond provider.
-
-
Method Detail
-
currentTimeMillis
public static final long currentTimeMillis()
Gets the current time in milliseconds.By default this returns
System.currentTimeMillis()
. This may be changed using other methods in this class.- Returns:
- the current time in milliseconds from 1970-01-01T00:00:00Z
-
setCurrentMillisSystem
public static final void setCurrentMillisSystem() throws java.lang.SecurityException
Resets the current time to return the system time.This method changes the behaviour of
currentTimeMillis()
. Whenever the current time is queried,System.currentTimeMillis()
is used.- Throws:
java.lang.SecurityException
- if the application does not have sufficient security rights
-
setCurrentMillisFixed
public static final void setCurrentMillisFixed(long fixedMillis) throws java.lang.SecurityException
Sets the current time to return a fixed millisecond time.This method changes the behaviour of
currentTimeMillis()
. Whenever the current time is queried, the same millisecond time will be returned.- Parameters:
fixedMillis
- the fixed millisecond time to use- Throws:
java.lang.SecurityException
- if the application does not have sufficient security rights
-
setCurrentMillisOffset
public static final void setCurrentMillisOffset(long offsetMillis) throws java.lang.SecurityException
Sets the current time to return the system time plus an offset.This method changes the behaviour of
currentTimeMillis()
. Whenever the current time is queried,System.currentTimeMillis()
is used and then offset by adding the millisecond value specified here.- Parameters:
offsetMillis
- the fixed millisecond time to use- Throws:
java.lang.SecurityException
- if the application does not have sufficient security rights
-
setCurrentMillisProvider
public static final void setCurrentMillisProvider(DateTimeUtils.MillisProvider millisProvider) throws java.lang.SecurityException
Sets the provider of the current time to class specified.This method changes the behaviour of
currentTimeMillis()
. Whenever the current time is queried, the specified class will be called.- Parameters:
millisProvider
- the provider of the current time to use, not null- Throws:
java.lang.SecurityException
- if the application does not have sufficient security rights- Since:
- 2.0
-
getInstantMillis
public static final long getInstantMillis(ReadableInstant instant)
Gets the millisecond instant from the specified instant object handling null.If the instant object is
null
, thecurrentTimeMillis()
will be returned. Otherwise, the millis from the object are returned.- Parameters:
instant
- the instant to examine, null means now- Returns:
- the time in milliseconds from 1970-01-01T00:00:00Z
-
getInstantChronology
public static final Chronology getInstantChronology(ReadableInstant instant)
Gets the chronology from the specified instant object handling null.If the instant object is
null
, or the instant's chronology isnull
,ISOChronology.getInstance()
will be returned. Otherwise, the chronology from the object is returned.- Parameters:
instant
- the instant to examine, null means ISO in the default zone- Returns:
- the chronology, never null
-
getIntervalChronology
public static final Chronology getIntervalChronology(ReadableInstant start, ReadableInstant end)
Gets the chronology from the specified instant based interval handling null.The chronology is obtained from the start if that is not null, or from the end if the start is null. The result is additionally checked, and if still null then
ISOChronology.getInstance()
will be returned.- Parameters:
start
- the instant to examine and use as the primary source of the chronologyend
- the instant to examine and use as the secondary source of the chronology- Returns:
- the chronology, never null
-
getIntervalChronology
public static final Chronology getIntervalChronology(ReadableInterval interval)
Gets the chronology from the specified interval object handling null.If the interval object is
null
, or the interval's chronology isnull
,ISOChronology.getInstance()
will be returned. Otherwise, the chronology from the object is returned.- Parameters:
interval
- the interval to examine, null means ISO in the default zone- Returns:
- the chronology, never null
-
getReadableInterval
public static final ReadableInterval getReadableInterval(ReadableInterval interval)
Gets the interval handling null.If the interval is
null
, an interval representing now to now in theISOChronology
will be returned. Otherwise, the interval specified is returned.- Parameters:
interval
- the interval to use, null means now to now- Returns:
- the interval, never null
- Since:
- 1.1
-
getChronology
public static final Chronology getChronology(Chronology chrono)
Gets the chronology handling null.If the chronology is
null
,ISOChronology.getInstance()
will be returned. Otherwise, the chronology is returned.- Parameters:
chrono
- the chronology to use, null means ISO in the default zone- Returns:
- the chronology, never null
-
getZone
public static final DateTimeZone getZone(DateTimeZone zone)
Gets the zone handling null.If the zone is
null
,DateTimeZone.getDefault()
will be returned. Otherwise, the zone specified is returned.- Parameters:
zone
- the time zone to use, null means the default zone- Returns:
- the time zone, never null
-
getPeriodType
public static final PeriodType getPeriodType(PeriodType type)
Gets the period type handling null.If the zone is
null
,PeriodType.standard()
will be returned. Otherwise, the type specified is returned.- Parameters:
type
- the time zone to use, null means the standard type- Returns:
- the type to use, never null
-
getDurationMillis
public static final long getDurationMillis(ReadableDuration duration)
Gets the millisecond duration from the specified duration object handling null.If the duration object is
null
, zero will be returned. Otherwise, the millis from the object are returned.- Parameters:
duration
- the duration to examine, null means zero- Returns:
- the duration in milliseconds
-
isContiguous
public static final boolean isContiguous(ReadablePartial partial)
Checks whether the partial is contiguous.A partial is contiguous if one field starts where another ends.
For example
LocalDate
is contiguous because DayOfMonth has the same range (Month) as the unit of the next field (MonthOfYear), and MonthOfYear has the same range (Year) as the unit of the next field (Year).Similarly,
LocalTime
is contiguous, as it consists of MillisOfSecond, SecondOfMinute, MinuteOfHour and HourOfDay (note how the names of each field 'join up').However, a Year/HourOfDay partial is not contiguous because the range field Day is not equal to the next field Year. Similarly, a DayOfWeek/DayOfMonth partial is not contiguous because the range Month is not equal to the next field Day.
- Parameters:
partial
- the partial to check- Returns:
- true if the partial is contiguous
- Throws:
java.lang.IllegalArgumentException
- if the partial is null- Since:
- 1.1
-
getDateFormatSymbols
public static final java.text.DateFormatSymbols getDateFormatSymbols(java.util.Locale locale)
Gets theDateFormatSymbols
based on the given locale.If JDK 6 or newer is being used, DateFormatSymbols.getInstance(locale) will be used in order to allow the use of locales defined as extensions. Otherwise, new DateFormatSymbols(locale) will be used. See JDK 6
DateFormatSymbols
for further information.- Parameters:
locale
- theLocale
used to get the correctDateFormatSymbols
- Returns:
- the symbols
- Since:
- 2.0
-
getDefaultTimeZoneNames
public static final java.util.Map<java.lang.String,DateTimeZone> getDefaultTimeZoneNames()
Gets the default map of time zone names.This can be changed by
setDefaultTimeZoneNames(java.util.Map<java.lang.String, org.joda.time.DateTimeZone>)
.The default set of short time zone names is as follows:
- UT - UTC
- UTC - UTC
- GMT - UTC
- EST - America/New_York
- EDT - America/New_York
- CST - America/Chicago
- CDT - America/Chicago
- MST - America/Denver
- MDT - America/Denver
- PST - America/Los_Angeles
- PDT - America/Los_Angeles
- Returns:
- the unmodifiable map of abbreviations to zones, not null
- Since:
- 2.2
-
setDefaultTimeZoneNames
public static final void setDefaultTimeZoneNames(java.util.Map<java.lang.String,DateTimeZone> names)
Sets the default map of time zone names.The map is copied before storage.
- Parameters:
names
- the map of abbreviations to zones, not null- Since:
- 2.2
-
toJulianDay
public static final double toJulianDay(long epochMillis)
Calculates the astronomical Julian Day for an instant.The Julian day is a well-known system of time measurement for scientific use by the astronomy community. It expresses the interval of time in days and fractions of a day since January 1, 4713 BC (Julian) Greenwich noon.
Each day starts at midday (not midnight) and time is expressed as a fraction. Thus the fraction 0.25 is 18:00. equal to one quarter of the day from midday to midday.
Note that this method has nothing to do with the day-of-year.
- Parameters:
epochMillis
- the epoch millis from 1970-01-01Z- Returns:
- the astronomical Julian Day represented by the specified instant
- Since:
- 2.2
-
toJulianDayNumber
public static final long toJulianDayNumber(long epochMillis)
Calculates the astronomical Julian Day Number for an instant.The
toJulianDay(long)
method calculates the astronomical Julian Day with a fraction based on days starting at midday. This method calculates the variant where days start at midnight. JDN 0 is used for the date equivalent to Monday January 1, 4713 BC (Julian). Thus these days start 12 hours before those of the fractional Julian Day.Note that this method has nothing to do with the day-of-year.
- Parameters:
epochMillis
- the epoch millis from 1970-01-01Z- Returns:
- the astronomical Julian Day represented by the specified instant
- Since:
- 2.2
-
fromJulianDay
public static final long fromJulianDay(double julianDay)
Creates a date-time from a Julian Day.Returns the
DateTime
object equal to the specified Julian Day.- Parameters:
julianDay
- the Julian Day- Returns:
- the epoch millis from 1970-01-01Z
- Since:
- 2.2
-
-