View Raw SPL
/*****************************************************************************
* *
* YEARS2DAYS.SPL Copyright (C) 2024 DSP Development Corporation *
* All Rights Reserved *
* *
* Author: Randy Race *
* *
* Synopsis: Converts years to days *
* *
* Revisions: 2 Dec 2024 RRR Creation *
* *
*****************************************************************************/
#if @HELP_YEARS2DAYS
YEARS2DAYS
Purpose: Converts years to days.
Syntax: YEARS2DAYS(years)
years - A scalar or series, the years values.
Returns: A scalar or series of day values.
Example:
years2days(3)
returns 1095, the number of days in 3 years.
Example:
days2years(years2days(3))
returns 3 years showing days2years and years2days are inverse
functions.
Example:
W1: 0..0.2..1
W2: years2days(w1)
W3: days2years(w2)
W1 contains the years series {0, 0.2, 0.4, 0.6, 0.8, 1.0}.
W2 contains the day series {0, 73, 146, 219, 292, 365}.
W3 recovers the original years series.
Remarks:
YEARS2DAYS converts a year value or series to days.
YEARS2DAYS assumes that a leap year can occur four years after
the first full year.
See DAYS2YEARS to convert a day value or series to years.
See Also:
DAYS2YEARS
YEARS2MINUTES
YEARS2HOURS
YEARS2SECONDS
#endif
/* convert years to days */
years2days(years = 0)
{
local centuries, rem_years, century_days, leap_years, non_leap_years, year_days, days;
centuries = int(years / 100);
rem_years = years % 100;
/* days from centuries */
century_days = centuries * 36524.25;
/* days from remaining years, accounting for leap years */
leap_years = int(rem_years / 4) - int(rem_years / 100);
non_leap_years = rem_years - leap_years;
year_days = non_leap_years * 365 + leap_years * 366;
days = century_days + year_days;
if (isarray(days))
{
setvunits(days, "Days", -1);
}
return(days);
}