View Raw SPL
/*****************************************************************************
*                                                                            *
*   DAYS2YEARS.SPL Copyright (C) 2024 DSP Development Corporation            *
*                               All Rights Reserved                          *
*                                                                            *
*   Author:        Randy Race                                                *
*                                                                            *
*   Synopsis:      Converts days to years                                    *
*                                                                            *
*   Revisions:      2 Dec 2024  RRR  Creation                                *
*                                                                            *
*****************************************************************************/


#if @HELP_DAYS2YEARS

    DAYS2YEARS

    Purpose: Converts days to years.

    Syntax:  DAYS2YEARS(days)

              days - A scalar or series, the days values.


    Returns: A scalar or series of years values.

    Example:
             days2years(3)

             returns 0.008219, the number of years in 3 days.

    Example:
             years2days(days2years(3))

             returns 3 days showing years2days and days2years are inverse
             functions.

    Example:
             W1: 0..73..365
             W2: days2years(w1)
             W3: years2days(w2)

             W1 contains the days series {0, 73, 146, 219, 292, 365}.

             W2 contains the years series {0, 0.2, 0.4, 0.6, 0.8, 1.0}.

             W3 recovers the original days series.

    Remarks:
             DAYS2YEARS converts an hour value or series to years.

             DAYS2YEARS assumes that a leap year can occur four years after
             the first full year.

             See YEARS2DAYS to convert a years value or series to
             days.

    See Also:
             DAYS2HOURS
             DAYS2MINUTES
             DAYS2SECONDS
             YEARS2DAYS
#endif


/* convert days to years */
days2years(days = 0)
{
        local years, leap_years, remaining_days, fractional_years, total_years;
        local days_in_years = 365;

        years = int(days / days_in_years);

        leap_years = int(years / 4) - int(years / 100) + int(years / 400);

        remaining_days = days - years * days_in_years - leap_years;

        fractional_years = remaining_days / days_in_years;

        total_years = years + fractional_years;

        return (total_years);
}