R/date.R

Defines functions DOY

# * Author:    Bangyou Zheng (Bangyou.Zheng@csiro.au)
# * Created:   15:16 Tuesday, 16 August 2011
# *

# Calculate day of year according to date
# 
# @param Date a string or date vector.
# @param format date format when Date is a string vector
# @export
DOY <- function(Date, format = NULL)
{
    if (is.null(format))
    {
        format <- '%d/%m/%Y'
    }
    if (mode(Date) == 'character')
    {
        Date <- as.Date(Date, format = format)
    }
    if (mode(Date) == 'numeric' & 'Date' %in% class(Date))
    {
        pos <- !is.na(Date)
        last_year <- rep(NA, length(Date))
        last_year[pos] <- as.Date(paste(as.numeric(format(Date[pos],"%Y"))-1,
            "-12-31",sep=""))
        return(as.numeric(Date - last_year))
    } else if (mode(Date) %in% c("numeric", 'list') & "POSIXt" %in% class(Date)) {
        pos <- !is.na(Date)
        last_year <- as.POSIXlt(rep(NA, length(Date)))
        last_year[pos] <- as.POSIXlt(paste(as.numeric(format(Date[pos], 
            "%Y")) - 1, "-12-31", sep = ""))
        return(floor(as.numeric(Date - last_year)))
    }
    return (NULL)
}

Try the weaana package in your browser

Any scripts or data that you put into this service are public.

weaana documentation built on Sept. 27, 2021, 5:12 p.m.