Convert a POSIXt time (given as either the t
argument
or as the year
, month
, and other arguments) to a Julian day,
using the method provided in
Chapter 3 of Meeus (1982). It should be noted that
Meeus and other astronomical treatments use fractional days, whereas the
present code follows the R convention of specifying days in whole numbers,
with hours, minutes, and seconds also provided as necessary. Conversion is
simple, as illustrated in the example for 1977 April 26.4, for which Meeus
calculates julian day 2443259.9. Note that the R documentation for
julian()
suggests another formula, but the point of the present
function is to match the other Meeus formulae, so that suggestion is ignored
here.
julianDay(
t,
year = NA,
month = NA,
day = NA,
hour = NA,
min = NA,
sec = NA,
tz = "UTC"
)
A Julian-Day number, in astronomical convention as explained in Meeus.
a time, in POSIXt format, e.g. as created by
as.POSIXct()
, as.POSIXlt()
, or
numberAsPOSIXct()
, or a character string that can be
converted to a time using as.POSIXct()
. If t
is provided,
the other arguments are ignored.
year, to be provided along with month
, etc., if t
is not provided.
numerical value for the month, with January being 1.
(This is required if t
is not provided.)
numerical value for day in month, starting at 1.
(This is required if t
is not provided.)
numerical value for hour of day, in range 0 to 24.
(This is required if t
is not provided.)
numerical value of the minute of the hour.
(This is required if t
is not provided.)
numerical value for the second of the minute.
(This is required if t
is not provided.)
timezone
Dan Kelley
Meeus, Jean. Astronomical Formulas for Calculators. Second Edition. Richmond, Virginia, USA: Willmann-Bell, 1982.
Other things related to astronomy:
angle2hms()
,
eclipticalToEquatorial()
,
equatorialToLocalHorizontal()
,
julianCenturyAnomaly()
,
moonAngle()
,
siderealTime()
,
sunAngle()
,
sunDeclinationRightAscension()
Other things related to time:
ctimeToSeconds()
,
julianCenturyAnomaly()
,
numberAsHMS()
,
numberAsPOSIXct()
,
secondsToCtime()
,
unabbreviateYear()
library(oce)
# example from Meeus
t <- ISOdatetime(1977, 4, 26, hour = 0, min = 0, sec = 0, tz = "UTC") + 0.4 * 86400
stopifnot(all.equal(julianDay(t), 2443259.9))
Run the code above in your browser using DataLab