public class FieldAbsoluteDate<T extends CalculusFieldElement<T>> extends Object implements FieldTimeStamped<T>, TimeShiftable<FieldAbsoluteDate<T>>, Comparable<FieldAbsoluteDate<T>>
Instances of this class are considered to be absolute in the sense
that each one represent the occurrence of some event and can be compared
to other instances or located in any time scale
. In
other words the different locations of an event with respect to two different
time scales (say TAI
and UTC
for example) are
simply different perspective related to a single object. Only one
FieldAbsoluteDate<T>
instance is needed, both representations being available
from this single instance by specifying the time scales as parameter when calling
the ad-hoc methods.
Since an instance is not bound to a specific time-scale, all methods related to the location of the date within some time scale require to provide the time scale as an argument. It is therefore possible to define a date in one time scale and to use it in another one. An example of such use is to read a date from a file in UTC and write it in another file in TAI. This can be done as follows:
DateTimeComponents utcComponents = readNextDate(); FieldAbsoluteDate<T> date = new FieldAbsoluteDate<>(utcComponents, TimeScalesFactory.getUTC()); writeNextDate(date.getComponents(TimeScalesFactory.getTAI()));
Two complementary views are available:
location view (mainly for input/output or conversions)
locations represent the coordinate of one event with respect to a
time scale
. The related methods are FieldAbsoluteDate(Field, DateComponents, TimeComponents, TimeScale)
, FieldAbsoluteDate(Field, int, int, int, int, int, double, TimeScale)
, FieldAbsoluteDate(Field, int, int, int, TimeScale)
, FieldAbsoluteDate(Field,
Date, TimeScale)
, createGPSDate(int, CalculusFieldElement)
, parseCCSDSCalendarSegmentedTimeCode(byte, byte[])
, toDate(TimeScale)
,
toString(timeScale)
, toString()
,
and timeScalesOffset(org.orekit.time.TimeScale, org.orekit.time.TimeScale)
.
offset view (mainly for physical computation)
offsets represent either the flow of time between two events
(two instances of the class) or durations. They are counted in seconds,
are continuous and could be measured using only a virtually perfect stopwatch.
The related methods are FieldAbsoluteDate(FieldAbsoluteDate, double)
,
parseCCSDSUnsegmentedTimeCode(Field, byte, byte, byte[], FieldAbsoluteDate)
,
parseCCSDSDaySegmentedTimeCode(Field, byte, byte[], DateComponents)
,
durationFrom(FieldAbsoluteDate)
, compareTo(FieldAbsoluteDate)
, equals(Object)
and hashCode()
.
A few reference epochs which are commonly used in space systems have been defined. These
epochs can be used as the basis for offset computation. The supported epochs are:
getJulianEpoch(Field)
, getModifiedJulianEpoch(Field)
, getFiftiesEpoch(Field)
,
getCCSDSEpoch(Field)
, getGalileoEpoch(Field)
, getGPSEpoch(Field)
,
getJ2000Epoch(Field)
, getJavaEpoch(Field)
. There are also two factory methods
createJulianEpoch(CalculusFieldElement)
and createBesselianEpoch(CalculusFieldElement)
that can be used to compute other reference epochs like J1900.0 or B1950.0.
In addition to these reference epochs, two other constants are defined for convenience:
getPastInfinity(Field)
and getFutureInfinity(Field)
, which can be used either
as dummy dates when a date is not yet initialized, or for initialization of loops searching for
a min or max date.
Instances of the FieldAbsoluteDate<T>
class are guaranteed to be immutable.
TimeScale
,
TimeStamped
,
ChronologicalComparator
Constructor and Description |
---|
FieldAbsoluteDate(AbsoluteDate since,
T elapsedDuration)
Build an instance from an elapsed duration since to another instant.
|
FieldAbsoluteDate(Field<T> field)
Create an instance with a default value (
getJ2000Epoch(Field) ). |
FieldAbsoluteDate(Field<T> field,
AbsoluteDate date)
Build an instance from an AbsoluteDate.
|
FieldAbsoluteDate(Field<T> field,
DateComponents date,
TimeComponents time,
TimeScale timeScale)
Build an instance from a location in a
time scale . |
FieldAbsoluteDate(Field<T> field,
DateComponents date,
TimeScale timeScale)
Build an instance from a location in a
time scale . |
FieldAbsoluteDate(Field<T> field,
DateTimeComponents location,
TimeScale timeScale)
Build an instance from a location in a
time scale . |
FieldAbsoluteDate(Field<T> field,
Date location,
TimeScale timeScale)
Build an instance from a location in a
time scale . |
FieldAbsoluteDate(Field<T> field,
int year,
int month,
int day,
int hour,
int minute,
double second,
TimeScale timeScale)
Build an instance from a location in a
time scale . |
FieldAbsoluteDate(Field<T> field,
int year,
int month,
int day,
TimeScale timeScale)
Build an instance from a location in a
time scale . |
FieldAbsoluteDate(Field<T> field,
int year,
Month month,
int day,
int hour,
int minute,
double second,
TimeScale timeScale)
Build an instance from a location in a
time scale . |
FieldAbsoluteDate(Field<T> field,
int year,
Month month,
int day,
TimeScale timeScale)
Build an instance from a location in a
time scale . |
FieldAbsoluteDate(Field<T> field,
String location,
TimeScale timeScale)
Build an instance from a location (parsed from a string) in a
time scale . |
FieldAbsoluteDate(FieldAbsoluteDate<T> since,
double elapsedDuration)
Build an instance from an elapsed duration since to another instant.
|
FieldAbsoluteDate(FieldAbsoluteDate<T> reference,
double apparentOffset,
TimeScale timeScale)
Build an instance from an apparent clock offset with respect to another
instant in the perspective of a specific
time scale . |
FieldAbsoluteDate(FieldAbsoluteDate<T> since,
T elapsedDuration)
Build an instance from an elapsed duration since to another instant.
|
Modifier and Type | Method and Description |
---|---|
int |
compareTo(FieldAbsoluteDate<T> date)
Compare the instance with another date.
|
static <T extends CalculusFieldElement<T>> |
createBesselianEpoch(T besselianEpoch)
Build an instance corresponding to a Besselian Epoch (BE).
|
static <T extends CalculusFieldElement<T>> |
createBesselianEpoch(T besselianEpoch,
TimeScales timeScales)
Build an instance corresponding to a Besselian Epoch (BE).
|
static <T extends CalculusFieldElement<T>> |
createGPSDate(int weekNumber,
T milliInWeek)
Build an instance corresponding to a GPS date.
|
static <T extends CalculusFieldElement<T>> |
createGPSDate(int weekNumber,
T milliInWeek,
TimeScale gps)
Build an instance corresponding to a GPS date.
|
static <T extends CalculusFieldElement<T>> |
createJDDate(int jd,
T secondsSinceNoon,
TimeScale timeScale)
Build an instance corresponding to a Julian Day date.
|
static <T extends CalculusFieldElement<T>> |
createJulianEpoch(T julianEpoch)
Build an instance corresponding to a Julian Epoch (JE).
|
static <T extends CalculusFieldElement<T>> |
createJulianEpoch(T julianEpoch,
TimeScales timeScales)
Build an instance corresponding to a Julian Epoch (JE).
|
static <T extends CalculusFieldElement<T>> |
createMJDDate(int mjd,
T secondsInDay,
TimeScale timeScale)
Build an instance corresponding to a Modified Julian Day date.
|
T |
durationFrom(AbsoluteDate instant)
Compute the physically elapsed duration between two instants.
|
T |
durationFrom(FieldAbsoluteDate<T> instant)
Compute the physically elapsed duration between two instants.
|
boolean |
equals(Object date)
Check if the instance represents the same time as another instance.
|
static <T extends CalculusFieldElement<T>> |
getArbitraryEpoch(Field<T> field)
Get an arbitrary date.
|
static <T extends CalculusFieldElement<T>> |
getCCSDSEpoch(Field<T> field)
Reference epoch for CCSDS Time Code Format (CCSDS 301.0-B-4):
|
DateTimeComponents |
getComponents(int minutesFromUTC)
Split the instance into date/time components for a local time.
|
DateTimeComponents |
getComponents(int minutesFromUTC,
TimeScale utc)
Split the instance into date/time components for a local time.
|
DateTimeComponents |
getComponents(TimeScale timeScale)
Split the instance into date/time components.
|
DateTimeComponents |
getComponents(TimeZone timeZone)
Split the instance into date/time components for a time zone.
|
DateTimeComponents |
getComponents(TimeZone timeZone,
TimeScale utc)
Split the instance into date/time components for a time zone.
|
FieldAbsoluteDate<T> |
getDate()
Get the date.
|
Field<T> |
getField()
Get the field.
|
static <T extends CalculusFieldElement<T>> |
getFiftiesEpoch(Field<T> field)
Reference epoch for 1950 dates: 1950-01-01T00:00:00 Terrestrial Time.
|
static <T extends CalculusFieldElement<T>> |
getFutureInfinity(Field<T> field)
Dummy date at infinity in the future direction.
|
static <T extends CalculusFieldElement<T>> |
getGalileoEpoch(Field<T> field)
Reference epoch for Galileo System Time: 1999-08-22T00:00:00 UTC.
|
static <T extends CalculusFieldElement<T>> |
getGPSEpoch(Field<T> field)
Reference epoch for GPS weeks: 1980-01-06T00:00:00 GPS time.
|
static <T extends CalculusFieldElement<T>> |
getJ2000Epoch(Field<T> field)
J2000.0 Reference epoch: 2000-01-01T12:00:00 Terrestrial Time (not UTC).
|
static <T extends CalculusFieldElement<T>> |
getJavaEpoch(Field<T> field)
Java Reference epoch: 1970-01-01T00:00:00 Universal Time Coordinate.
|
static <T extends CalculusFieldElement<T>> |
getJulianEpoch(Field<T> field)
Reference epoch for julian dates: -4712-01-01T12:00:00 Terrestrial Time.
|
static <T extends CalculusFieldElement<T>> |
getModifiedJulianEpoch(Field<T> field)
Reference epoch for modified julian dates: 1858-11-17T00:00:00 Terrestrial Time.
|
static <T extends CalculusFieldElement<T>> |
getPastInfinity(Field<T> field)
Dummy date at infinity in the past direction.
|
int |
hashCode()
Get a hashcode for this date.
|
boolean |
isAfter(FieldTimeStamped<T> other)
Check if the instance represents a time that is strictly after another.
|
boolean |
isAfterOrEqualTo(FieldTimeStamped<T> other)
Check if the instance represents a time that is after or equal to another.
|
boolean |
isBefore(FieldTimeStamped<T> other)
Check if the instance represents a time that is strictly before another.
|
boolean |
isBeforeOrEqualTo(FieldTimeStamped<T> other)
Check if the instance represents a time that is before or equal to another.
|
boolean |
isBetween(FieldTimeStamped<T> boundary,
FieldTimeStamped<T> otherBoundary)
Check if the instance represents a time that is strictly between two others representing
the boundaries of a time span.
|
boolean |
isBetweenOrEqualTo(FieldTimeStamped<T> boundary,
FieldTimeStamped<T> otherBoundary)
Check if the instance represents a time that is between two others representing
the boundaries of a time span, or equal to one of them.
|
boolean |
isCloseTo(FieldTimeStamped<T> other,
double tolerance)
Check if the instance time is close to another.
|
boolean |
isEqualTo(FieldTimeStamped<T> other)
Check if the instance represents the same time as another.
|
T |
offsetFrom(FieldAbsoluteDate<T> instant,
TimeScale timeScale)
Compute the apparent clock offset between two instant in the
perspective of a specific
time scale . |
FieldAbsoluteDate<T> |
parseCCSDSCalendarSegmentedTimeCode(byte preambleField,
byte[] timeField)
Build an instance from a CCSDS Calendar Segmented Time Code (CCS).
|
FieldAbsoluteDate<T> |
parseCCSDSCalendarSegmentedTimeCode(byte preambleField,
byte[] timeField,
TimeScale utc)
Build an instance from a CCSDS Calendar Segmented Time Code (CCS).
|
static <T extends CalculusFieldElement<T>> |
parseCCSDSDaySegmentedTimeCode(Field<T> field,
byte preambleField,
byte[] timeField,
DateComponents agencyDefinedEpoch)
Build an instance from a CCSDS Day Segmented Time Code (CDS).
|
static <T extends CalculusFieldElement<T>> |
parseCCSDSDaySegmentedTimeCode(Field<T> field,
byte preambleField,
byte[] timeField,
DateComponents agencyDefinedEpoch,
TimeScale utc)
Build an instance from a CCSDS Day Segmented Time Code (CDS).
|
static <T extends CalculusFieldElement<T>> |
parseCCSDSUnsegmentedTimeCode(Field<T> field,
byte preambleField1,
byte preambleField2,
byte[] timeField,
FieldAbsoluteDate<T> agencyDefinedEpoch)
Build an instance from a CCSDS Unsegmented Time Code (CUC).
|
static <T extends CalculusFieldElement<T>> |
parseCCSDSUnsegmentedTimeCode(Field<T> field,
byte preambleField1,
byte preambleField2,
byte[] timeField,
FieldAbsoluteDate<T> agencyDefinedEpoch,
FieldAbsoluteDate<T> ccsdsEpoch)
Build an instance from a CCSDS Unsegmented Time Code (CUC).
|
FieldAbsoluteDate<T> |
shiftedBy(double dt)
Get a time-shifted date.
|
FieldAbsoluteDate<T> |
shiftedBy(T dt)
Get a time-shifted date.
|
T |
timeScalesOffset(TimeScale scale1,
TimeScale scale2)
Compute the offset between two time scales at the current instant.
|
AbsoluteDate |
toAbsoluteDate()
Transform the FieldAbsoluteDate in an AbsoluteDate.
|
Date |
toDate(TimeScale timeScale)
Convert the instance to a Java
Date . |
String |
toString()
Get a String representation of the instant location with up to 16 digits of
precision for the seconds value.
|
String |
toString(int minutesFromUTC)
Get a String representation of the instant location for a local time.
|
String |
toString(int minutesFromUTC,
TimeScale utc)
Get a String representation of the instant location for a local time.
|
String |
toString(TimeScale timeScale)
Get a String representation of the instant location in ISO-8601 format without the
UTC offset and with up to 16 digits of precision for the seconds value.
|
String |
toString(TimeZone timeZone)
Get a String representation of the instant location for a time zone.
|
String |
toString(TimeZone timeZone,
TimeScale utc)
Get a String representation of the instant location for a time zone.
|
public FieldAbsoluteDate(Field<T> field, AbsoluteDate date)
field
- used by defaultdate
- AbsoluteDate to instantiate as a FieldAbsoluteDate@DefaultDataContext public FieldAbsoluteDate(Field<T> field)
getJ2000Epoch(Field)
).
This method uses the default data context
.
field
- field used by defaultFieldAbsoluteDate(Field, AbsoluteDate)
public FieldAbsoluteDate(FieldAbsoluteDate<T> since, T elapsedDuration)
It is important to note that the elapsed duration is not
the difference between two readings on a time scale. As an example,
the duration between the two instants leading to the readings
2005-12-31T23:59:59 and 2006-01-01T00:00:00 in the UTC
time scale is not 1 second, but a stop watch would have measured
an elapsed duration of 2 seconds between these two instances because a leap
second was introduced at the end of 2005 in this time scale.
This constructor is the reverse of the durationFrom(FieldAbsoluteDate)
method.
since
- start instant of the measured durationelapsedDuration
- physically elapsed duration from the since
instant, as measured in a regular time scaledurationFrom(FieldAbsoluteDate)
public FieldAbsoluteDate(Field<T> field, String location, TimeScale timeScale)
time scale
.
The supported formats for location are mainly the ones defined in ISO-8601 standard,
the exact subset is explained in DateTimeComponents.parseDateTime(String)
,
DateComponents.parseDate(String)
and TimeComponents.parseTime(String)
.
As CCSDS ASCII calendar segmented time code is a trimmed down version of ISO-8601, it is also supported by this constructor.
field
- field utilized by defaultlocation
- location in the time scale, must be in a supported formattimeScale
- time scaleIllegalArgumentException
- if location string is not in a supported formatpublic FieldAbsoluteDate(Field<T> field, DateTimeComponents location, TimeScale timeScale)
time scale
.field
- field utilized by defaultlocation
- location in the time scaletimeScale
- time scalepublic FieldAbsoluteDate(Field<T> field, DateComponents date, TimeComponents time, TimeScale timeScale)
time scale
.field
- field utilized by defaultdate
- date location in the time scaletime
- time location in the time scaletimeScale
- time scalepublic FieldAbsoluteDate(Field<T> field, int year, int month, int day, int hour, int minute, double second, TimeScale timeScale) throws IllegalArgumentException
time scale
.field
- field utilized by defaultyear
- year number (may be 0 or negative for BC years)month
- month number from 1 to 12day
- day number from 1 to 31hour
- hour number from 0 to 23minute
- minute number from 0 to 59second
- second number from 0.0 to 60.0 (excluded)timeScale
- time scaleIllegalArgumentException
- if inconsistent arguments
are given (parameters out of range)public FieldAbsoluteDate(Field<T> field, int year, Month month, int day, int hour, int minute, double second, TimeScale timeScale) throws IllegalArgumentException
time scale
.field
- field utilized by defaultyear
- year number (may be 0 or negative for BC years)month
- month enumerateday
- day number from 1 to 31hour
- hour number from 0 to 23minute
- minute number from 0 to 59second
- second number from 0.0 to 60.0 (excluded)timeScale
- time scaleIllegalArgumentException
- if inconsistent arguments
are given (parameters out of range)public FieldAbsoluteDate(Field<T> field, DateComponents date, TimeScale timeScale) throws IllegalArgumentException
time scale
.
The hour is set to 00:00:00.000.
field
- field utilized by defaultdate
- date location in the time scaletimeScale
- time scaleIllegalArgumentException
- if inconsistent arguments
are given (parameters out of range)public FieldAbsoluteDate(Field<T> field, int year, int month, int day, TimeScale timeScale) throws IllegalArgumentException
time scale
.
The hour is set to 00:00:00.000.
field
- field utilized by defaultyear
- year number (may be 0 or negative for BC years)month
- month number from 1 to 12day
- day number from 1 to 31timeScale
- time scaleIllegalArgumentException
- if inconsistent arguments
are given (parameters out of range)public FieldAbsoluteDate(Field<T> field, int year, Month month, int day, TimeScale timeScale) throws IllegalArgumentException
time scale
.
The hour is set to 00:00:00.000.
field
- field utilized by defaultyear
- year number (may be 0 or negative for BC years)month
- month enumerateday
- day number from 1 to 31timeScale
- time scaleIllegalArgumentException
- if inconsistent arguments
are given (parameters out of range)public FieldAbsoluteDate(Field<T> field, Date location, TimeScale timeScale)
time scale
.field
- field utilized as defaultlocation
- location in the time scaletimeScale
- time scalepublic FieldAbsoluteDate(FieldAbsoluteDate<T> since, double elapsedDuration)
It is important to note that the elapsed duration is not the difference between two readings on a time scale.
since
- start instant of the measured durationelapsedDuration
- physically elapsed duration from the since
instant, as measured in a regular time scalepublic FieldAbsoluteDate(AbsoluteDate since, T elapsedDuration)
It is important to note that the elapsed duration is not the difference between two readings on a time scale.
since
- start instant of the measured durationelapsedDuration
- physically elapsed duration from the since
instant, as measured in a regular time scalepublic FieldAbsoluteDate(FieldAbsoluteDate<T> reference, double apparentOffset, TimeScale timeScale)
time scale
.
It is important to note that the apparent clock offset is the
difference between two readings on a time scale and not an elapsed
duration. As an example, the apparent clock offset between the two instants
leading to the readings 2005-12-31T23:59:59 and 2006-01-01T00:00:00 in the
UTC
time scale is 1 second, but the elapsed duration is 2
seconds because a leap second has been introduced at the end of 2005 in this
time scale.
This constructor is the reverse of the offsetFrom(FieldAbsoluteDate,
TimeScale)
method.
reference
- reference instantapparentOffset
- apparent clock offset from the reference instant
(difference between two readings in the specified time scale)timeScale
- time scale with respect to which the offset is definedoffsetFrom(FieldAbsoluteDate, TimeScale)
@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> parseCCSDSUnsegmentedTimeCode(Field<T> field, byte preambleField1, byte preambleField2, byte[] timeField, FieldAbsoluteDate<T> agencyDefinedEpoch)
CCSDS Unsegmented Time Code is defined in the blue book: CCSDS Time Code Format (CCSDS 301.0-B-4) published in November 2010
If the date to be parsed is formatted using version 3 of the standard
(CCSDS 301.0-B-3 published in 2002) or if the extension of the preamble
field introduced in version 4 of the standard is not used, then the
preambleField2
parameter can be set to 0.
This method uses the default data context
if
the CCSDS epoch is used.
T
- the type of the field elementsfield
- field for the componentspreambleField1
- first byte of the field specifying the format, often
not transmitted in data interfaces, as it is constant for a given data interfacepreambleField2
- second byte of the field specifying the format
(added in revision 4 of the CCSDS standard in 2010), often not transmitted in data
interfaces, as it is constant for a given data interface (value ignored if presence
not signaled in preambleField1
)timeField
- byte array containing the time codeagencyDefinedEpoch
- reference epoch, ignored if the preamble field
specifies the CCSDS reference epoch
is used (and hence
may be null in this case)parseCCSDSUnsegmentedTimeCode(Field, byte, byte, byte[], FieldAbsoluteDate,
FieldAbsoluteDate)
public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> parseCCSDSUnsegmentedTimeCode(Field<T> field, byte preambleField1, byte preambleField2, byte[] timeField, FieldAbsoluteDate<T> agencyDefinedEpoch, FieldAbsoluteDate<T> ccsdsEpoch)
CCSDS Unsegmented Time Code is defined in the blue book: CCSDS Time Code Format (CCSDS 301.0-B-4) published in November 2010
If the date to be parsed is formatted using version 3 of the standard (CCSDS
301.0-B-3 published in 2002) or if the extension of the preamble field introduced
in version 4 of the standard is not used, then the preambleField2
parameter
can be set to 0.
T
- the type of the field elementsfield
- field for the componentspreambleField1
- first byte of the field specifying the format, often not
transmitted in data interfaces, as it is constant for a
given data interfacepreambleField2
- second byte of the field specifying the format (added in
revision 4 of the CCSDS standard in 2010), often not
transmitted in data interfaces, as it is constant for a
given data interface (value ignored if presence not
signaled in preambleField1
)timeField
- byte array containing the time codeagencyDefinedEpoch
- reference epoch, ignored if the preamble field specifies
the CCSDS reference epoch is used (and hence may be null
in this case)ccsdsEpoch
- reference epoch, ignored if the preamble field specifies
the agency epoch is used.@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> parseCCSDSDaySegmentedTimeCode(Field<T> field, byte preambleField, byte[] timeField, DateComponents agencyDefinedEpoch)
CCSDS Day Segmented Time Code is defined in the blue book: CCSDS Time Code Format (CCSDS 301.0-B-4) published in November 2010
This method uses the default data context
.
T
- the type of the field elementsfield
- field for the componentspreambleField
- field specifying the format, often not transmitted in
data interfaces, as it is constant for a given data interfacetimeField
- byte array containing the time codeagencyDefinedEpoch
- reference epoch, ignored if the preamble field
specifies the CCSDS reference epoch
is used (and hence
may be null in this case)parseCCSDSDaySegmentedTimeCode(Field, byte, byte[], DateComponents,
TimeScale)
public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> parseCCSDSDaySegmentedTimeCode(Field<T> field, byte preambleField, byte[] timeField, DateComponents agencyDefinedEpoch, TimeScale utc)
CCSDS Day Segmented Time Code is defined in the blue book: CCSDS Time Code Format (CCSDS 301.0-B-4) published in November 2010
T
- the type of the field elementsfield
- field for the componentspreambleField
- field specifying the format, often not transmitted in
data interfaces, as it is constant for a given data
interfacetimeField
- byte array containing the time codeagencyDefinedEpoch
- reference epoch, ignored if the preamble field specifies
the CCSDS reference epoch
is used (and hence may be null in this case)utc
- time scale used to compute date and time components.@DefaultDataContext public FieldAbsoluteDate<T> parseCCSDSCalendarSegmentedTimeCode(byte preambleField, byte[] timeField)
CCSDS Calendar Segmented Time Code is defined in the blue book: CCSDS Time Code Format (CCSDS 301.0-B-4) published in November 2010
This method uses the default data context
.
preambleField
- field specifying the format, often not transmitted in
data interfaces, as it is constant for a given data interfacetimeField
- byte array containing the time codeparseCCSDSCalendarSegmentedTimeCode(byte, byte[], TimeScale)
public FieldAbsoluteDate<T> parseCCSDSCalendarSegmentedTimeCode(byte preambleField, byte[] timeField, TimeScale utc)
CCSDS Calendar Segmented Time Code is defined in the blue book: CCSDS Time Code Format (CCSDS 301.0-B-4) published in November 2010
preambleField
- field specifying the format, often not transmitted in data
interfaces, as it is constant for a given data interfacetimeField
- byte array containing the time codeutc
- time scale used to compute date and time components.public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> createJDDate(int jd, T secondsSinceNoon, TimeScale timeScale)
T
- the type of the field elementsjd
- Julian daysecondsSinceNoon
- seconds in the Julian day
(BEWARE, Julian days start at noon, so 0.0 is noon)timeScale
- time scale in which the seconds in day are definedpublic static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> createMJDDate(int mjd, T secondsInDay, TimeScale timeScale)
T
- the type of the field elementsmjd
- modified Julian daysecondsInDay
- seconds in the daytimeScale
- time scale in which the seconds in day are defined@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> createGPSDate(int weekNumber, T milliInWeek)
This method uses the default data context
.
GPS dates are provided as a week number starting at
GPS epoch
and as a number of milliseconds
since week start.
T
- the type of the field elementsweekNumber
- week number since GPS epoch
milliInWeek
- number of milliseconds since week startcreateGPSDate(int, CalculusFieldElement, TimeScale)
public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> createGPSDate(int weekNumber, T milliInWeek, TimeScale gps)
GPS dates are provided as a week number starting at
GPS epoch
and as a number of milliseconds since week
start.
T
- the type of the field elementsweekNumber
- week number since GPS epoch
milliInWeek
- number of milliseconds since week startgps
- GPS time scale.@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> createJulianEpoch(T julianEpoch)
According to Lieske paper: Precession Matrix Based on IAU (1976) System of Astronomical Constants, Astronomy and Astrophysics, vol. 73, no. 3, Mar. 1979, p. 282-284, Julian Epoch is related to Julian Ephemeris Date as:
JE = 2000.0 + (JED - 2451545.0) / 365.25
This method reverts the formula above and computes an FieldAbsoluteDate<T>
from the Julian Epoch.
This method uses the default data context
.
T
- the type of the field elementsjulianEpoch
- Julian epoch, like 2000.0 for defining the classical reference J2000.0getJ2000Epoch(Field)
,
createBesselianEpoch(CalculusFieldElement)
,
createJulianEpoch(CalculusFieldElement, TimeScales)
public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> createJulianEpoch(T julianEpoch, TimeScales timeScales)
According to Lieske paper: Precession Matrix Based on IAU (1976) System of Astronomical Constants, Astronomy and Astrophysics, vol. 73, no. 3, Mar. 1979, p. 282-284, Julian Epoch is related to Julian Ephemeris Date as:
JE = 2000.0 + (JED - 2451545.0) / 365.25
This method reverts the formula above and computes an FieldAbsoluteDate<T>
from the Julian Epoch.
T
- the type of the field elementsjulianEpoch
- Julian epoch, like 2000.0 for defining the classical reference
J2000.0timeScales
- used in the computation.getJ2000Epoch(Field)
,
createBesselianEpoch(CalculusFieldElement)
,
TimeScales.createJulianEpoch(double)
@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> createBesselianEpoch(T besselianEpoch)
According to Lieske paper: Precession Matrix Based on IAU (1976) System of Astronomical Constants, Astronomy and Astrophysics, vol. 73, no. 3, Mar. 1979, p. 282-284, Besselian Epoch is related to Julian Ephemeris Date as:
BE = 1900.0 + (JED - 2415020.31352) / 365.242198781
This method reverts the formula above and computes an FieldAbsoluteDate<T>
from the Besselian Epoch.
This method uses the default data context
.
T
- the type of the field elementsbesselianEpoch
- Besselian epoch, like 1950 for defining the classical reference B1950.0createJulianEpoch(CalculusFieldElement)
,
createBesselianEpoch(CalculusFieldElement, TimeScales)
public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> createBesselianEpoch(T besselianEpoch, TimeScales timeScales)
According to Lieske paper: Precession Matrix Based on IAU (1976) System of Astronomical Constants, Astronomy and Astrophysics, vol. 73, no. 3, Mar. 1979, p. 282-284, Besselian Epoch is related to Julian Ephemeris Date as:
BE = 1900.0 + (JED - 2415020.31352) / 365.242198781
This method reverts the formula above and computes an FieldAbsoluteDate<T>
from the Besselian Epoch.
T
- the type of the field elementsbesselianEpoch
- Besselian epoch, like 1950 for defining the classical
reference B1950.0timeScales
- used in the computation.createJulianEpoch(CalculusFieldElement)
,
TimeScales.createBesselianEpoch(double)
@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> getJulianEpoch(Field<T> field)
Both java.util.Date
and DateComponents
classes
follow the astronomical conventions and consider a year 0 between
years -1 and +1, hence this reference date lies in year -4712 and not
in year -4713 as can be seen in other documents or programs that obey
a different convention (for example the convcal
utility).
This method uses the default data context
.
T
- the type of the field elementsfield
- field for the componentsAbsoluteDate.JULIAN_EPOCH
,
TimeScales.getJulianEpoch()
@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> getModifiedJulianEpoch(Field<T> field)
This method uses the default data context
.
T
- the type of the field elementsfield
- field for the componentsAbsoluteDate.MODIFIED_JULIAN_EPOCH
,
TimeScales.getModifiedJulianEpoch()
@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> getFiftiesEpoch(Field<T> field)
This method uses the default data context
.
T
- the type of the field elementsfield
- field for the componentsAbsoluteDate.FIFTIES_EPOCH
,
TimeScales.getFiftiesEpoch()
@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> getCCSDSEpoch(Field<T> field)
This method uses the default data context
.
1958-01-01T00:00:00 International Atomic Time (not UTC).
T
- the type of the field elementsfield
- field for the componentsAbsoluteDate.CCSDS_EPOCH
,
TimeScales.getCcsdsEpoch()
@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> getGalileoEpoch(Field<T> field)
This method uses the default data context
.
T
- the type of the field elementsfield
- field for the componentsAbsoluteDate.GALILEO_EPOCH
,
TimeScales.getGalileoEpoch()
@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> getGPSEpoch(Field<T> field)
This method uses the default data context
.
T
- the type of the field elementsfield
- field for the componentsAbsoluteDate.GPS_EPOCH
,
TimeScales.getGpsEpoch()
@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> getJ2000Epoch(Field<T> field)
This method uses the default data context
.
T
- the type of the field elementsfield
- field for the componentscreateJulianEpoch(CalculusFieldElement)
,
AbsoluteDate.J2000_EPOCH
,
TimeScales.getJ2000Epoch()
@DefaultDataContext public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> getJavaEpoch(Field<T> field)
This method uses the default data context
.
Between 1968-02-01 and 1972-01-01, UTC-TAI = 4.213 170 0s + (MJD - 39 126) x 0.002 592s. As on 1970-01-01 MJD = 40587, UTC-TAI = 8.000082s
T
- the type of the field elementsfield
- field for the componentsAbsoluteDate.JAVA_EPOCH
,
TimeScales.getJavaEpoch()
public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> getPastInfinity(Field<T> field)
T
- the type of the field elementsfield
- field for the componentsAbsoluteDate.PAST_INFINITY
,
TimeScales.getPastInfinity()
public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> getFutureInfinity(Field<T> field)
T
- the type of the field elementsfield
- field for the componentsAbsoluteDate.FUTURE_INFINITY
,
TimeScales.getFutureInfinity()
public static <T extends CalculusFieldElement<T>> FieldAbsoluteDate<T> getArbitraryEpoch(Field<T> field)
T
- the type of the field elementsfield
- field for the componentspublic FieldAbsoluteDate<T> shiftedBy(T dt)
Calling this method is equivalent to call new FieldAbsoluteDate<>(this, dt)
.
dt
- time shift in secondsPVCoordinates.shiftedBy(double)
,
Attitude.shiftedBy(double)
,
Orbit.shiftedBy(double)
,
SpacecraftState.shiftedBy(double)
public T durationFrom(FieldAbsoluteDate<T> instant)
The returned duration is the number of seconds physically
elapsed between the two instants, measured in a regular time
scale with respect to surface of the Earth (i.e either the TAI scale
, the TT scale
or the GPS scale
). It is the only method that gives a
duration with a physical meaning.
This method gives the same result (with less computation)
as calling offsetFrom(FieldAbsoluteDate, TimeScale)
with a second argument set to one of the regular scales cited
above.
This method is the reverse of the FieldAbsoluteDate(FieldAbsoluteDate,
double)
constructor.
instant
- instant to subtract from the instanceoffsetFrom(FieldAbsoluteDate, TimeScale)
,
FieldAbsoluteDate(FieldAbsoluteDate, double)
public T durationFrom(AbsoluteDate instant)
The returned duration is the number of seconds physically
elapsed between the two instants, measured in a regular time
scale with respect to surface of the Earth (i.e either the TAI scale
, the TT scale
or the GPS scale
). It is the only method that gives a
duration with a physical meaning.
This method gives the same result (with less computation)
as calling offsetFrom(FieldAbsoluteDate, TimeScale)
with a second argument set to one of the regular scales cited
above.
This method is the reverse of the FieldAbsoluteDate(FieldAbsoluteDate,
double)
constructor.
instant
- instant to subtract from the instanceoffsetFrom(FieldAbsoluteDate, TimeScale)
,
FieldAbsoluteDate(FieldAbsoluteDate, double)
public T offsetFrom(FieldAbsoluteDate<T> instant, TimeScale timeScale)
time scale
.
The offset is the number of seconds counted in the given
time scale between the locations of the two instants, with
all time scale irregularities removed (i.e. considering all
days are exactly 86400 seconds long). This method will give
a result that may not have a physical meaning if the time scale
is irregular. For example since a leap second was introduced at
the end of 2005, the apparent offset between 2005-12-31T23:59:59
and 2006-01-01T00:00:00 is 1 second, but the physical duration
of the corresponding time interval as returned by the durationFrom(FieldAbsoluteDate)
method is 2 seconds.
This method is the reverse of the FieldAbsoluteDate(FieldAbsoluteDate,
double, TimeScale)
constructor.
instant
- instant to subtract from the instancetimeScale
- time scale with respect to which the offset should
be computeddurationFrom(FieldAbsoluteDate)
,
FieldAbsoluteDate(FieldAbsoluteDate, double, TimeScale)
public T timeScalesOffset(TimeScale scale1, TimeScale scale2)
The offset is defined as l₁-l₂
where l₁ is the location of the instant in
the scale1
time scale and l₂ is the
location of the instant in the scale2
time scale.
scale1
- first time scalescale2
- second time scalepublic Date toDate(TimeScale timeScale)
Date
.
Conversion to the Date class induces a loss of precision because the Date class does not provide sub-millisecond information. Java Dates are considered to be locations in some times scales.
timeScale
- time scale to useDate
instance representing the location
of the instant in the time scalepublic DateTimeComponents getComponents(TimeScale timeScale)
timeScale
- time scale to use@DefaultDataContext public DateTimeComponents getComponents(int minutesFromUTC)
This method uses the default data context
.
minutesFromUTC
- offset in minutes from UTC (positive Eastwards UTC,
negative Westward UTC)getComponents(int, TimeScale)
public DateTimeComponents getComponents(int minutesFromUTC, TimeScale utc)
minutesFromUTC
- offset in minutes from UTC (positive Eastwards UTC,
negative Westward UTC)utc
- time scale used to compute date and time components.public FieldAbsoluteDate<T> getDate()
getDate
in interface FieldTimeStamped<T extends CalculusFieldElement<T>>
@DefaultDataContext public DateTimeComponents getComponents(TimeZone timeZone)
This method uses the default data context
.
timeZone
- time zonegetComponents(TimeZone, TimeScale)
public DateTimeComponents getComponents(TimeZone timeZone, TimeScale utc)
timeZone
- time zoneutc
- time scale used to compute date and time components.public int compareTo(FieldAbsoluteDate<T> date)
compareTo
in interface Comparable<FieldAbsoluteDate<T extends CalculusFieldElement<T>>>
date
- other date to compare the instance topublic boolean equals(Object date)
public boolean isEqualTo(FieldTimeStamped<T> other)
other
- the instant to compare this date toisCloseTo(FieldTimeStamped, double)
public boolean isCloseTo(FieldTimeStamped<T> other, double tolerance)
other
- the instant to compare this date totolerance
- the separation, in seconds, under which the two instants will be considered close to each otherisEqualTo(FieldTimeStamped)
public boolean isBefore(FieldTimeStamped<T> other)
other
- the instant to compare this date toisBeforeOrEqualTo(FieldTimeStamped)
public boolean isAfter(FieldTimeStamped<T> other)
other
- the instant to compare this date toisAfterOrEqualTo(FieldTimeStamped)
public boolean isBeforeOrEqualTo(FieldTimeStamped<T> other)
other
- the instant to compare this date toisBefore(FieldTimeStamped)
public boolean isAfterOrEqualTo(FieldTimeStamped<T> other)
other
- the instant to compare this date toisAfterOrEqualTo(FieldTimeStamped)
public boolean isBetween(FieldTimeStamped<T> boundary, FieldTimeStamped<T> otherBoundary)
boundary
represents a time that is before or after otherBoundary
will
not change the result of this method.boundary
- one end of the time spanotherBoundary
- the other end of the time spanisBetweenOrEqualTo(FieldTimeStamped, FieldTimeStamped)
public boolean isBetweenOrEqualTo(FieldTimeStamped<T> boundary, FieldTimeStamped<T> otherBoundary)
boundary
represents a time that is before or after
otherBoundary
will not change the result of this method.boundary
- one end of the time spanotherBoundary
- the other end of the time spanisBetween(FieldTimeStamped, FieldTimeStamped)
public int hashCode()
@DefaultDataContext public String toString()
Since this method is used in exception messages and error handling every effort is made to return some representation of the instant. If UTC is available from the default data context then it is used to format the string in UTC. If not then TAI is used. Finally if the prior attempts fail this method falls back to converting this class's internal representation to a string.
This method uses the default data context
.
toString
in class Object
AbsoluteDate.toString()
,
toString(TimeScale)
,
DateTimeComponents.toString(int, int)
public String toString(TimeScale timeScale)
timeScale
- time scale to useDateTimeComponents.toString(int, int)
@DefaultDataContext public String toString(int minutesFromUTC)
This method uses the default data context
.
minutesFromUTC
- offset in minutes from UTC (positive Eastwards UTC,
negative Westward UTC).toString(int, TimeScale)
public String toString(int minutesFromUTC, TimeScale utc)
minutesFromUTC
- offset in minutes from UTC (positive Eastwards UTC,
negative Westward UTC).utc
- time scale used to compute date and time components.@DefaultDataContext public String toString(TimeZone timeZone)
This method uses the default data context
.
timeZone
- time zonetoString(TimeZone, TimeScale)
public String toString(TimeZone timeZone, TimeScale utc)
timeZone
- time zoneutc
- time scale used to compute date and time components.public FieldAbsoluteDate<T> shiftedBy(double dt)
Calling this method is equivalent to call new AbsoluteDate(this, dt)
.
shiftedBy
in interface TimeShiftable<FieldAbsoluteDate<T extends CalculusFieldElement<T>>>
dt
- time shift in secondsPVCoordinates.shiftedBy(double)
,
Attitude.shiftedBy(double)
,
Orbit.shiftedBy(double)
,
SpacecraftState.shiftedBy(double)
public AbsoluteDate toAbsoluteDate()
Copyright © 2002-2022 CS GROUP. All rights reserved.