Package uk.ac.starlink.table
Class TimeMapper
- java.lang.Object
-
- uk.ac.starlink.table.TimeMapper
-
- All Implemented Interfaces:
DomainMapper
public abstract class TimeMapper extends java.lang.Object implements DomainMapper
DomainMapper for mapping values to epochs in a common time scale. The target domain is doubles giving the number of seconds since the Unix epoch (1970-01-01T00:00:00). The time scale is generally assumed to be UTC, though conversions may not always be performed, for instance for values in which the intended time scale is not obvious.A java (IEEE 754) double has 52+1 bits of precision, which I make 52*ln(2)/ln(10)=15.65 decimal places, and a year contains 3.15e7 seconds, which gives you the following precisions:
- epoch +/- 1.7 months: 1 nanosecond precision
- epoch +/- 140 years: 1 microsecond precision
- epoch +/- 140 kyears: 1 millisecond precision
- epoch +/- 140 Myears: 1 second precision
- Since:
- 12 Aug 2013
- Author:
- Mark Taylor
-
-
Field Summary
Fields Modifier and Type Field Description static TimeMapper
DECIMAL_YEAR
Mapper for numeric values in decimal year (since 0 AD).static TimeMapper
ISO_8601
Mapper for ISO-8601 strings.static TimeMapper
JD
Mapper for numeric values in Julian Day.static TimeMapper
MJD
Mapper for numeric values in Modified Julian Date.static java.lang.String
TARGET_NAME
Returns target domain name ("Time").static TimeMapper
UNIX_SECONDS
Mapper for numeric values (already) in unix seconds.
-
Constructor Summary
Constructors Modifier Constructor Description protected
TimeMapper(java.lang.Class sourceClass, java.lang.String sourceName, java.lang.String sourceDescription)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description java.lang.Class
getSourceClass()
Returns the type of values from which this mapper instance can convert.java.lang.String
getSourceDescription()
Returns a description of the type of source values which this mapper can convert from.java.lang.String
getSourceName()
Returns a short name for the type of source values which this mapper can convert from.java.lang.String
getTargetName()
ReturnsTARGET_NAME
.static TimeMapper[]
getTimeMappers()
Returns a selection of time mapper instances.abstract double
toUnixSeconds(java.lang.Object sourceValue)
Maps a source value to time in seconds since the Unix epoch.
-
-
-
Field Detail
-
TARGET_NAME
public static final java.lang.String TARGET_NAME
Returns target domain name ("Time").- See Also:
- Constant Field Values
-
DECIMAL_YEAR
public static final TimeMapper DECIMAL_YEAR
Mapper for numeric values in decimal year (since 0 AD).
-
MJD
public static final TimeMapper MJD
Mapper for numeric values in Modified Julian Date.
-
JD
public static final TimeMapper JD
Mapper for numeric values in Julian Day.
-
UNIX_SECONDS
public static final TimeMapper UNIX_SECONDS
Mapper for numeric values (already) in unix seconds.
-
ISO_8601
public static final TimeMapper ISO_8601
Mapper for ISO-8601 strings.
-
-
Method Detail
-
getTargetName
public final java.lang.String getTargetName()
ReturnsTARGET_NAME
.- Specified by:
getTargetName
in interfaceDomainMapper
- Returns:
- domain identifier
-
getSourceClass
public java.lang.Class getSourceClass()
Description copied from interface:DomainMapper
Returns the type of values from which this mapper instance can convert.- Specified by:
getSourceClass
in interfaceDomainMapper
- Returns:
- class of mapper source objects to which this mapper can be applied
-
getSourceName
public java.lang.String getSourceName()
Description copied from interface:DomainMapper
Returns a short name for the type of source values which this mapper can convert from.- Specified by:
getSourceName
in interfaceDomainMapper
- Returns:
- mapper source type name
-
getSourceDescription
public java.lang.String getSourceDescription()
Description copied from interface:DomainMapper
Returns a description of the type of source values which this mapper can convert from.- Specified by:
getSourceDescription
in interfaceDomainMapper
- Returns:
- mapper source type description
-
toUnixSeconds
public abstract double toUnixSeconds(java.lang.Object sourceValue)
Maps a source value to time in seconds since the Unix epoch.- Parameters:
sourceValue
- value in source domain- Returns:
- number of seconds since midnight 1 Jan 1970
-
getTimeMappers
public static TimeMapper[] getTimeMappers()
Returns a selection of time mapper instances.
-
-