com.raben.util
Class JulianDay

java.lang.Object
  |
  +--com.raben.util.JulianDay
All Implemented Interfaces:
java.lang.Cloneable, java.io.Serializable

public final class JulianDay
extends java.lang.Object
implements java.io.Serializable, java.lang.Cloneable

Routines for calculating and setting Julian day number based on algorithms from Jean Meeus, "Astronomical Algorithms", 2nd Edition, Willmann-Bell, Inc., 1998.

Version:
$Revision: 1.19 $ $Date: 2002/12/12 20:46:29 $
Author:
Vern Raben (mailto:vern@raben.com)
See Also:
Serialized Form

Field Summary
static int APRIL
           
static int AUGUST
           
static int DATE
           
static int DAY_OF_MONTH
           
static int DAY_OF_WEEK
           
static int DAY_OF_YEAR
           
static int DECEMBER
           
static double EPOCH_0
           
static double EPOCH_1970
           
static int FEBRUARY
           
static int HOUR
           
static int HOUR_OF_DAY
           
static int JANUARY
           
static int JD
           
static int JULY
           
static int JUNE
           
static int MARCH
           
static int MAY
           
static int MINUTE
           
static int MJD
           
static int MONTH
           
static java.lang.String[] MONTHS
           
static int NOVEMBER
           
static int OCTOBER
           
static int SECOND
           
static int SEPTEMBER
           
static java.lang.String SQL_DATE_FORMAT
           
static java.lang.String[] TIME_UNIT
           
static int YEAR
           
 
Constructor Summary
JulianDay()
          JulianCalendar constructor - sets JD for current time
JulianDay(java.util.Calendar cal)
          Construct JulianDate given Calendar as a parameter
JulianDay(double jd)
          JulianCalendar constructor - sets JD passed as double
JulianDay(int yr, int mo, double da)
          Constructor to create Julian day given year, month, and decimal day
JulianDay(int yr, int mo, int da)
          Construct JulianDate given year, month, and date
JulianDay(int yr, int mo, int da, int hr, int min)
          Construct JulianDate given year, month, date, hour and minute
JulianDay(int yr, int mo, int da, int hr, int min, int sec)
          Construct JulianDate given year, month, day, hour, minute, and second
JulianDay(JulianDay cal)
          Copy constructor for JulianDate
JulianDay(long timeInMilliSec)
          Construct JulianDay from system time in milli-seconds since Jan 1, 1970
JulianDay(java.lang.String str)
          Set JulianDay from sql database compatible date/time string (yyyy-mm-dd hh:mm:ss)
 
Method Summary
 void add(int unit, double val)
          Add specified value in specified time unit to current Julian Date increments next higher field ISSUE - meaning of incrementing YEAR and MONTH by fractional value is not clear since period of a month and year varies, that is ignored.
 void add(int unit, int val)
          Add specified value in specified time unit to current Julian Date increments next higher field ISSUE - meaning of incrementing YEAR and MONTH by fractional value is not clear since period of a month and year varies, that is ignored.
 java.lang.Object clone()
          Return clone of JulianDay object
 double diff(JulianDay date)
          Returns time difference in days between date specified and the JulianDay of this object (parameter date-this date)
 boolean equals(double jd)
          Returns true if Julian day number is within 0.001 of parameter jd
 boolean equals(JulianDay date)
          Return true if JulianDates are equal, false otherwise
 int get(int field)
          Returns the specified field
 java.util.Calendar getCalendar()
          Get java Calendar equivalent of Julian Day
 java.lang.String getDateTimeStr()
           
static double getIncrement(int unit, int incr)
          Get increment in days given time unit and increment
 double getJDN()
          Returns the Julian Date Number as a double
 long getMilliSeconds()
          Returns milli-seconds since Jan 1, 1970
 double getMJD()
          Return the modified Julian date
 java.util.Date getTime()
          Return Java Date
 java.lang.String getYMD(int leastUnit)
          Return date as YYYYMMDDHHSS string with the least unit to be returned specified For example to to return YYYYMMDD specify least unit as JulianDay.DATE
 void set(int field, double value)
          This method sets Julian day or modified Julian day
 void set(int field, int value)
          Set various JulianCalendar fields Example: JulianDay jd=new JulianDay(); jd.set(Calendar.YEAR,1999);
 void set(int year, int month, int date)
          Set year, month, and day
 void set(int year, int month, int date, int hour, int minute)
          Set year, month,day, hour and minute
 void set(int year, int month, int date, int hour, int minute, int second)
          Set year month, day, hour, minute and second
 void set(JulianDay jd)
           
 void setDateFormat(java.text.SimpleDateFormat dateFormat)
          Set SimpleDateFormat for displaying date/time string
 void setDateFormat(java.lang.String formatStr)
          Set SimpleDateFormat string ISSUE - only valid after Jan 1, 1970
 void setDateTime(java.lang.String str)
          Set date/time from string
 void setEndOfDay()
          set hour to 23, minute and second to 59
 void setStartOfDay()
          Set hour,minute, and second to 0
 void setTime(java.util.Date dat)
          Set date from Java Date
 void setYMD(java.lang.String str)
          Set date from sting in the form YYYYMMDDhhmmss (YYYY=year MM=month DD=day hh=hr mm=min ss=sec)
 java.lang.String toString()
           
 void update()
          Update JulianDay to current time
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

JD

public static final int JD
See Also:
Constant Field Values

MJD

public static final int MJD
See Also:
Constant Field Values

YEAR

public static final int YEAR
See Also:
Constant Field Values

MONTH

public static final int MONTH
See Also:
Constant Field Values

DATE

public static final int DATE
See Also:
Constant Field Values

HOUR

public static final int HOUR
See Also:
Constant Field Values

HOUR_OF_DAY

public static final int HOUR_OF_DAY
See Also:
Constant Field Values

MINUTE

public static final int MINUTE
See Also:
Constant Field Values

SECOND

public static final int SECOND
See Also:
Constant Field Values

DAY_OF_YEAR

public static final int DAY_OF_YEAR
See Also:
Constant Field Values

DAY_OF_WEEK

public static final int DAY_OF_WEEK
See Also:
Constant Field Values

DAY_OF_MONTH

public static final int DAY_OF_MONTH
See Also:
Constant Field Values

JANUARY

public static final int JANUARY
See Also:
Constant Field Values

FEBRUARY

public static final int FEBRUARY
See Also:
Constant Field Values

MARCH

public static final int MARCH
See Also:
Constant Field Values

APRIL

public static final int APRIL
See Also:
Constant Field Values

MAY

public static final int MAY
See Also:
Constant Field Values

JUNE

public static final int JUNE
See Also:
Constant Field Values

JULY

public static final int JULY
See Also:
Constant Field Values

AUGUST

public static final int AUGUST
See Also:
Constant Field Values

SEPTEMBER

public static final int SEPTEMBER
See Also:
Constant Field Values

OCTOBER

public static final int OCTOBER
See Also:
Constant Field Values

NOVEMBER

public static final int NOVEMBER
See Also:
Constant Field Values

DECEMBER

public static final int DECEMBER
See Also:
Constant Field Values

MONTHS

public static final java.lang.String[] MONTHS

TIME_UNIT

public static final java.lang.String[] TIME_UNIT

EPOCH_1970

public static final double EPOCH_1970
See Also:
Constant Field Values

EPOCH_0

public static final double EPOCH_0
See Also:
Constant Field Values

SQL_DATE_FORMAT

public static final java.lang.String SQL_DATE_FORMAT
See Also:
Constant Field Values
Constructor Detail

JulianDay

public JulianDay()
JulianCalendar constructor - sets JD for current time


JulianDay

public JulianDay(double jd)
JulianCalendar constructor - sets JD passed as double

Parameters:
jd - double The Julian date

JulianDay

public JulianDay(int yr,
                 int mo,
                 double da)
Constructor to create Julian day given year, month, and decimal day

Parameters:
yr - int
mo - int
da - double

JulianDay

public JulianDay(int yr,
                 int mo,
                 int da)
Construct JulianDate given year, month, and date

Parameters:
yr - int
mo - int
da - int

JulianDay

public JulianDay(int yr,
                 int mo,
                 int da,
                 int hr,
                 int min)
Construct JulianDate given year, month, date, hour and minute

Parameters:
yr - int
mo - int
da - int

JulianDay

public JulianDay(int yr,
                 int mo,
                 int da,
                 int hr,
                 int min,
                 int sec)
Construct JulianDate given year, month, day, hour, minute, and second

Parameters:
yr - int
mo - int
da - int
hr - int
min - int
sec - int

JulianDay

public JulianDay(long timeInMilliSec)
Construct JulianDay from system time in milli-seconds since Jan 1, 1970


JulianDay

public JulianDay(JulianDay cal)
Copy constructor for JulianDate

Parameters:
cal - com.raben.util.JulianDate

JulianDay

public JulianDay(java.lang.String str)
Set JulianDay from sql database compatible date/time string (yyyy-mm-dd hh:mm:ss)


JulianDay

public JulianDay(java.util.Calendar cal)
Construct JulianDate given Calendar as a parameter

Parameters:
cal - java.util.Calendar
Method Detail

add

public void add(int unit,
                double val)
Add specified value in specified time unit to current Julian Date increments next higher field ISSUE - meaning of incrementing YEAR and MONTH by fractional value is not clear since period of a month and year varies, that is ignored. Year is assumed to be 365 days and month is assumed to be 30 days for computing the fractional increment. ISSUE - not thoroughly tested, typically 1-2 second errors may occur due to round-off. Will be refactored "real soon now" :) to utilize BigDecimal internal representation of Julian Day.

Parameters:
unit - int Time unit
val - int Time increment

add

public void add(int unit,
                int val)
Add specified value in specified time unit to current Julian Date increments next higher field ISSUE - meaning of incrementing YEAR and MONTH by fractional value is not clear since period of a month and year varies, that is ignored. Year is assumed to be 365 days and month is assumed to be 30 days for computing the fractional increment. ISSUE - not thoroughly tested, typically 1-2 second errors may occur due to round-off. Will be refactored "real soon now" :) to utilize BigDecimal internal representation of Julian Day.

Parameters:
unit - int Time unit
val - int Time increment

diff

public double diff(JulianDay date)
Returns time difference in days between date specified and the JulianDay of this object (parameter date-this date)

Parameters:
date - com.raben.util.JulianDate
Returns:
double

equals

public boolean equals(double jd)
Returns true if Julian day number is within 0.001 of parameter jd

Parameters:
jd - double
Returns:
boolean

equals

public boolean equals(JulianDay date)
Return true if JulianDates are equal, false otherwise

Parameters:
date - com.raben.util.JulianDate
Returns:
boolean

get

public final int get(int field)
Returns the specified field

Parameters:
field - int The specified field
Returns:
int The field value

getDateTimeStr

public java.lang.String getDateTimeStr()

getJDN

public final double getJDN()
Returns the Julian Date Number as a double

Returns:
double

getMilliSeconds

public long getMilliSeconds()
Returns milli-seconds since Jan 1, 1970

Returns:
long

getMJD

public final double getMJD()
Return the modified Julian date

Returns:
double

getYMD

public java.lang.String getYMD(int leastUnit)
Return date as YYYYMMDDHHSS string with the least unit to be returned specified For example to to return YYYYMMDD specify least unit as JulianDay.DATE

Parameters:
leastUnit - int least unit to be returned

set

public void set(int field,
                double value)
This method sets Julian day or modified Julian day

Parameters:
field - int Field to be changed
value - double The value the field is set to ISSUE - double values are truncated when setting YEAR, MONTH

set

public final void set(int field,
                      int value)
Set various JulianCalendar fields Example: JulianDay jd=new JulianDay(); jd.set(Calendar.YEAR,1999);

Parameters:
field - int The field to be set
value - int The field value

set

public final void set(int year,
                      int month,
                      int date)
Set year, month, and day

Parameters:
year - int
month - int Note - January is 0, December is 11
date - int

set

public final void set(int year,
                      int month,
                      int date,
                      int hour,
                      int minute)
Set year, month,day, hour and minute

Parameters:
year - int
month - int January is 0, Dec is 11
date - int
hour - int
minute - int

set

public final void set(int year,
                      int month,
                      int date,
                      int hour,
                      int minute,
                      int second)
Set year month, day, hour, minute and second

Parameters:
year - int
month - int January is 0, December is 11
date - int
hour - int
minute - int
second - int

set

public final void set(JulianDay jd)

setDateTime

public void setDateTime(java.lang.String str)
Set date/time from string

Parameters:
str - java.lang.String

setEndOfDay

public void setEndOfDay()
set hour to 23, minute and second to 59


setStartOfDay

public void setStartOfDay()
Set hour,minute, and second to 0


setTime

public final void setTime(java.util.Date dat)
Set date from Java Date


setYMD

public void setYMD(java.lang.String str)
Set date from sting in the form YYYYMMDDhhmmss (YYYY=year MM=month DD=day hh=hr mm=min ss=sec)

Parameters:
str - java.lang.String

toString

public final java.lang.String toString()
Overrides:
toString in class java.lang.Object

clone

public java.lang.Object clone()
Return clone of JulianDay object

Overrides:
clone in class java.lang.Object
Returns:
Object;

setDateFormat

public void setDateFormat(java.lang.String formatStr)
Set SimpleDateFormat string ISSUE - only valid after Jan 1, 1970


setDateFormat

public void setDateFormat(java.text.SimpleDateFormat dateFormat)
Set SimpleDateFormat for displaying date/time string

Parameters:
dateFormat - SimpleDateFormat

getTime

public java.util.Date getTime()
Return Java Date

Returns:
Date

update

public void update()
Update JulianDay to current time


getIncrement

public static double getIncrement(int unit,
                                  int incr)
Get increment in days given time unit and increment

Parameters:
unit - Time unit (DATE,HOUR,HOUR_OF_DAY,MINUTE, or SECOND
incr - Time increment in unit specified
Returns:
double Increment in days
Throws:
If - unit is not Julian.DATE, HOUR, HOUR_OF_DAY, MINUTE or SECOND

getCalendar

public java.util.Calendar getCalendar()
Get java Calendar equivalent of Julian Day

Returns:
Calendar


Copyright © 2003 Raben Systems, Inc.. All Rights Reserved.