public final class TimeUtil
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
TimeUtil.TimeDigit |
static class |
TimeUtil.TimeStruct |
Modifier and Type | Field and Description |
---|---|
static int |
DAY |
static int |
HALF_YEAR |
static int |
HOUR |
static int |
MICRO |
static int |
MILLI |
static int |
MINUTE |
static int |
MONTH |
static int |
NANO |
static int |
QUARTER |
static int |
SECOND |
static TimeUtil.TimeDigit |
TD_DAY |
static TimeUtil.TimeDigit |
TD_HOUR |
static TimeUtil.TimeDigit |
TD_MICRO |
static TimeUtil.TimeDigit |
TD_MILLI |
static TimeUtil.TimeDigit |
TD_MINUTE |
static TimeUtil.TimeDigit |
TD_MONTH |
static TimeUtil.TimeDigit |
TD_NANO |
static TimeUtil.TimeDigit |
TD_SECOND |
static TimeUtil.TimeDigit |
TD_YEAR |
static int |
WEEK |
static int |
YEAR |
Modifier and Type | Method and Description |
---|---|
static TimeUtil.TimeStruct |
add(TimeUtil.TimeStruct a,
TimeUtil.TimeStruct b) |
static TimeUtil.TimeStruct |
borrow(TimeUtil.TimeStruct t)
Normalize the TimeStruct by decrementing higher digits.
|
static TimeUtil.TimeStruct |
carry(TimeUtil.TimeStruct t)
Normalize the TimeStruct by incrementing higher digits.
|
static Datum |
ceil(int step,
Datum datum)
return the next ordinal boundary if we aren't at one already.
|
static double |
convert(int year,
int month,
int day,
int hour,
int minute,
double second,
TimeLocationUnits units)
convert the month components to a double in the given units.
|
static Datum |
create(java.lang.String s)
Creates a datum from a string
|
static Datum |
createTimeDatum(int year,
int month,
int day,
int hour,
int minute,
int second,
int nano)
creates a Datum representing the time given in integer years, months, ..., seconds, nanoseconds.
|
static Datum |
createValid(java.lang.String validString)
creates a Datum from a string which is known to contain
a valid time format.
|
static DatumRange |
dayContaining(Datum t)
return a DatumRange for the day containing the given time.
|
static int |
dayOfYear(int month,
int day,
int year)
return the day of year for the month and day, for the given year
|
static int |
daysInMonth(int month,
int year) |
static Datum |
floor(int step,
Datum datum)
return the previous ordinal boundary if we aren't at one already.
|
static int[] |
fromDatum(Datum time)
returns the 7-element array of components from the time location datum:
0:year, 1:month, 2:day, 3:hour, 4:minute, 5:second, 6:nanoseconds
Note special care is taken to not use units conversions which introduce
noise into the numbers, so the following units are handled directly:
cdfTT2000, cdfEpoch, us2000, and mj1958.
|
static int |
getJulianDay(Datum datum)
return the the integer number of days that have elapsed since roughly Monday, January 1, 4713 BC.
|
static int |
getJulianDay(long val,
Units units)
return the the integer number of days that have elapsed since roughly Monday, January 1, 4713 BC.
|
static double |
getMicroSecondsSinceMidnight(Datum datum)
return the number of microseconds elapsed since the last midnight.
|
static double |
getSecondsSinceMidnight(Datum datum)
return the number of seconds elapsed since the last midnight.
|
static boolean |
isLeapYear(int year)
return the leap year for years 1901-2099.
|
static boolean |
isValidTime(java.lang.String string)
check to see if the string is parseable as a time.
|
static int |
julianDay(int year,
int month,
int day)
return the julianDay for the year month and day.
|
static int |
julianDayIMCCE(int YY,
int MM,
int DD)
calculation of julianDay based on http://www.imcce.fr/en/grandpublic/temps/jour_julien.php
This is slightly slower because of a cusp at 1582, but is accurate
before these times.
|
static TimeUtil.TimeStruct |
julianToGregorian(int julian)
Break the Julian day apart into month, day year.
|
static Datum |
lastLeapSecond(Datum t)
returns the instant after the last leap second.
|
static void |
main(java.lang.String[] args) |
static java.lang.String |
monthNameAbbrev(int mon)
returns "Jan", "Feb", ...
|
static int |
monthNumber(java.lang.String s)
returns 1..12 for the English month name.
|
static Datum |
next(int step,
Datum datum)
step to the next ordinal.
|
static Datum |
next(TimeUtil.TimeDigit td,
int count,
Datum datum)
return the next boundary
|
static Datum |
nextMidnight(Datum datum)
provide the next midnight, similar to the ceil function, noting that
if the datum provided is midnight already then it is simply returned.
|
static Datum |
nextMonth(Datum datum)
Deprecated.
Use next(MONTH,datum) instead
|
static TimeUtil.TimeStruct |
normalize(TimeUtil.TimeStruct t)
convert times like "2000-01-01T24:00" to "2000-01-02T00:00" and
"2000-002T00:00" to "2000-01-02T00:00".
|
static Datum |
now()
return the current time as a Datum.
|
static TimeUtil.TimeStruct |
parseTime(java.lang.String s)
parse the time into a timestruct.
|
static Datum |
prev(int step,
Datum datum)
step down the previous ordinal.
|
static Datum |
prevMidnight(Datum datum)
provide the previous midnight, similar to the floor function, noting that
if the datum provided is midnight exactly then it is simply returned.
|
static Datum |
prevWeek(Datum datum)
decrement by 7 days.
|
static DatumRange |
rangeContaining(int count,
int step,
Datum t)
return the hour or minute or day
|
static DatumRange |
rangeContaining(int count,
int step,
DatumRange tr)
return the hours or minutes or days interval containing the time range,
or multiple spans of this when the given range spans boundaries.
|
static TimeUtil.TimeStruct |
roundNDigits(TimeUtil.TimeStruct ts,
int n)
round seconds to N decimal places.
|
static TimeUtil.TimeStruct |
subtract(TimeUtil.TimeStruct a,
TimeUtil.TimeStruct b) |
static Datum |
toDatum(int[] timeArray)
get the datum from the 6 or 7 element timeArray.
|
static Datum |
toDatum(int[] timeArray,
Units u)
get the time datum from the 6 or 7 element decomposed timeArray.
|
static Datum |
toDatum(TimeUtil.TimeStruct d)
convert to Datum without regard to the type of unit used to represent time.
|
static Datum |
toDatum(TimeUtil.TimeStruct d,
Units u)
convert to a Datum with the given units.
|
static Datum |
toDatumDuration(int[] timeArray)
return approximate duration in Units.seconds or in Units.days.
|
static int[] |
toTimeArray(Datum time)
Deprecated.
use 7-element fromDatum instead, which is consistent with toDatum. Note the array elements are different!
|
static TimeUtil.TimeStruct |
toTimeStruct(Datum.Long datum)
splits the time location datum into y,m,d,etc components, using the full
precision of the Long backing the Datum.
|
static TimeUtil.TimeStruct |
toTimeStruct(Datum datum)
splits the time location datum into y,m,d,etc components.
|
public static final int YEAR
public static final int MONTH
public static final int DAY
public static final int HOUR
public static final int MINUTE
public static final int SECOND
public static final int MILLI
public static final int MICRO
public static final int NANO
public static final int WEEK
public static final int QUARTER
public static final int HALF_YEAR
public static final TimeUtil.TimeDigit TD_YEAR
public static final TimeUtil.TimeDigit TD_MONTH
public static final TimeUtil.TimeDigit TD_DAY
public static final TimeUtil.TimeDigit TD_HOUR
public static final TimeUtil.TimeDigit TD_MINUTE
public static final TimeUtil.TimeDigit TD_SECOND
public static final TimeUtil.TimeDigit TD_MILLI
public static final TimeUtil.TimeDigit TD_MICRO
public static final TimeUtil.TimeDigit TD_NANO
public static int daysInMonth(int month, int year)
public static int julianDayIMCCE(int YY, int MM, int DD)
YY
- Gregorian yearMM
- Gregorian monthDD
- Gregorian daypublic static int julianDay(int year, int month, int day)
year
- calendar year greater than 1582.month
- day
- day of month. For day of year, use month=1 and doy for day.julianToGregorian
public static int dayOfYear(int month, int day, int year)
month
- the month, january=1, february=2, etc.day
- day of monthyear
- four-digit yearpublic static double getSecondsSinceMidnight(Datum datum)
datum
- public static double getMicroSecondsSinceMidnight(Datum datum)
datum
- public static int getJulianDay(Datum datum)
datum
- public static int getJulianDay(long val, Units units)
val
- the magnitudeunits
- Units object identifying the units of the val, such as Units.us2000.public static Datum toDatum(TimeUtil.TimeStruct d)
d
- the decomposed time or time width.public static Datum toDatum(TimeUtil.TimeStruct d, Units u)
d
- the decomposed timeu
- the target units.public static TimeUtil.TimeStruct julianToGregorian(int julian)
julian
- the (integer) number of days that have elapsed since the initial epoch at noon Universal Time (UT) Monday, January 1, 4713 BCjulianDay( int year, int mon, int day )
public static TimeUtil.TimeStruct toTimeStruct(Datum.Long datum)
datum
- with time location units.public static TimeUtil.TimeStruct toTimeStruct(Datum datum)
datum
- with time location units.public static TimeUtil.TimeStruct add(TimeUtil.TimeStruct a, TimeUtil.TimeStruct b)
public static TimeUtil.TimeStruct subtract(TimeUtil.TimeStruct a, TimeUtil.TimeStruct b)
public static int[] toTimeArray(Datum time)
time
- the timepublic static Datum lastLeapSecond(Datum t)
t
- a time after 1970-01-01which uses similar code.
public static int[] fromDatum(Datum time)
time
- fromJulianDayAndOffset(int, int, int)
,
which uses similar code and is not used because Java doesn't have tuple results.
public static Datum toDatum(int[] timeArray)
timeArray,
- an int[6] or int[7].public static Datum toDatumDuration(int[] timeArray)
timeArray
- 6 or 7 element array [ yrs, months, days, hours, minutes, seconds, nanos ]DatumRangeUtil.parseISO8601Duration(java.lang.String)
public static Datum toDatum(int[] timeArray, Units u)
timeArray,
- an int[6] or int[7].u
- target units.public static boolean isLeapYear(int year)
year
- public static TimeUtil.TimeStruct carry(TimeUtil.TimeStruct t)
t
- a time structurepublic static TimeUtil.TimeStruct borrow(TimeUtil.TimeStruct t)
t
- the time.java.lang.IllegalArgumentException
- if t.day<0 or t.month<1normalize(org.das2.datum.TimeUtil.TimeStruct)
public static TimeUtil.TimeStruct normalize(TimeUtil.TimeStruct t)
t
- borrow(org.das2.datum.TimeUtil.TimeStruct)
public static TimeUtil.TimeStruct roundNDigits(TimeUtil.TimeStruct ts, int n)
ts
- a time structuren
- number of digits, 3 is millis, 6 is micros.public static Datum next(TimeUtil.TimeDigit td, int count, Datum datum)
td
- the boundary, e.g. TimeUtil.TD_HALF_YEARcount
- the number of boundariesdatum
- the starting point.public static Datum next(int step, Datum datum)
step
- the ordinal location, such as TimeUtil.DAY or TimeUtil.HALF_YEARdatum
- the location.public static Datum ceil(int step, Datum datum)
step
- the ordinal location, such as TimeUtil.DAY or TimeUtil.HALF_YEARdatum
- the location.public static Datum floor(int step, Datum datum)
step
- the ordinal location, such as TimeUtil.DAY or TimeUtil.HALF_YEARdatum
- the location.public static Datum nextMonth(Datum datum)
datum
- public static Datum prevWeek(Datum datum)
datum
- public static DatumRange dayContaining(Datum t)
t
- a time.public static DatumRange rangeContaining(int count, int step, DatumRange tr)
count,
- which must be 1 or a factor of 60.step
- the ordinal unit, such as TimeUtil.DAY or TimeUtil.HALF_YEARtr
- the timerangepublic static DatumRange rangeContaining(int count, int step, Datum t)
count,
- which must be 1 or a factor of 60.step
- the ordinal unit, such as TimeUtil.DAY or TimeUtil.HALF_YEARt
- the timepublic static Datum prev(int step, Datum datum)
step
- the ordinal location, such as TimeUtil.DAY or TimeUtil.HALF_YEARdatum
- the location.public static Datum now()
public static double convert(int year, int month, int day, int hour, int minute, double second, TimeLocationUnits units)
year
- the year, which must be greater than 1582month
- the monthday
- the day of month, unless month==0, then day is day of year.hour
- additional hoursminute
- additional minutessecond
- additional secondsunits
- the Units in which to return the result.public static int monthNumber(java.lang.String s) throws java.text.ParseException
s
- the three-letter month name, jan,feb,...,nov,decjava.text.ParseException
- if the name isn't recognizedpublic static java.lang.String monthNameAbbrev(int mon)
mon
- integer from 1 to 12.public static TimeUtil.TimeStruct parseTime(java.lang.String s) throws java.text.ParseException
s
- java.text.ParseException
createValid which creates a Datum.
public static Datum create(java.lang.String s) throws java.text.ParseException
s
- java.text.ParseException
public static Datum createValid(java.lang.String validString)
validString
- public static boolean isValidTime(java.lang.String string)
string
- any stringcreate(java.lang.String)
public static void main(java.lang.String[] args) throws java.lang.Exception
java.lang.Exception
public static Datum prevMidnight(Datum datum)
datum
- public static Datum nextMidnight(Datum datum)
datum
- public static Datum createTimeDatum(int year, int month, int day, int hour, int minute, int second, int nano)
year
- four digit year >= 1060.month
- integer month, 1..12.day
- integer day of month.hour
- additional hoursminute
- additional minutessecond
- additional secondsnano
- additional nanoseconds