FITSDateUtil.h

Classes

FITSDateUtil -- A class with static functions to help deal with FITS dates (full description)

class FITSDateUtil

Types

enum DateStyle

OLD
dd/mm/yy
NEW_DATEONLY
yyyy-mm-dd
NEW_DATEANDTIME
yyyy-mm-ddThh:mm:ss[.ss...]
AUTO_PICK
OLD if the current year is before 1998 AND "time" is before 1998, otherwise NEW_DATEANDTIME.

Interface

Public Members
static void toFITS(String &date, String &timesys, const MVTime &time, MEpoch::Types system = MEpoch::UTC, DateStyle style= AUTO_PICK, uInt precision=12)
static Bool fromFITS(MVTime &time, MEpoch::Types &system, const String &date, const String &timesys)
static Bool convertDateString(String &out, const String &in)
static uInt findPrecision(const String &fitsDate)

Description

Review Status

Reviewed By:
Eric Sessoms
Date Reviewed:
2002/08/19
Programs:
Tests:

Prerequisite

Etymology

This is a collection of static utility functions for creating and interpreting FITS date keywords (e.g. DATE-OBS).

Synopsis

Its never necessary to construct a FITSDateUtil, just use the static functions to help handle FITS dates.

Motivation

The strings that make up the value of FITS dates have a precise format. This class encompasses knowlege of the formats used and hopefully simplifies their creation and conversion to and from aips++ MVTimes.

Member Description

enum DateStyle

static void toFITS(String &date, String &timesys, const MVTime &time, MEpoch::Types system = MEpoch::UTC, DateStyle style= AUTO_PICK, uInt precision=12)

Convert an MVTime to a FITS date string and timesys string. The time system must also be supplied. Precision is only used when the time as well as the date is used (NEW_DATEANDTIME or AUTO_PICK). The default (16) gives 10^(-10) second accuracy, 6 gives second level accuracy. Default is 10^(-6)s (1 micro-s) accuracy. 0 means date only, no time (equivalent to NEW_DATEONLY).

static Bool fromFITS(MVTime &time, MEpoch::Types &system, const String &date, const String &timesys)

Convert a FITS date string and TIMESYS keyword value into an MVTime and system. Returns False if it can't decode date and timesys. It tries to convert as much as possible, for example if it can't decode timesys it still attempts to decode the time. It sets the date to Jan 1/1900 if it can't decode the time, and UTC if it can't decode timesys. If timesys is the empty string then UTC is assumed.

static Bool convertDateString(String &out, const String &in)

Convert a FITS Date string to the current format. If the "in" format is already correct it is just copied through.

static uInt findPrecision(const String &fitsDate)

Determine the precision in a FITS date string. Old style dates or no time returns 0, New style + time returns 6 + the number of decimal points, i.e. if we have a time at all we assume it is at least accurate to the second level. The result of this can be used in the call to toFITS, i.e. it has the same meaning.

This is mostly meant to be a helper function for convertDateString, but it may be called by anyone.