Alignment of Times

DESCRIPTION:

Align a time vector to a time unit specified as in timeSeq.

USAGE:

timeAlign(x, by="days", k.by=1, direction=1, week.align=NULL,  
          holidays=timeDate()) 

REQUIRED ARGUMENTS:

x
a time/date object.

OPTIONAL ARGUMENTS:

by
One of the following character strings, giving the units to align to: "milliseconds", "seconds", "minutes", "hours", "days", "weekdays", "bizdays", "weeks", "months", "quarters", or "years".
k.by
non-zero integer giving the number of the by units to align to. Ignored for "weekdays", "bizdays", and "weeks".
direction
either 1 or -1, to align to the next or previous time that is an integer number of the k.by * by units.
week.align
if not NULL, and by is "weeks", you can supply a character string (or an integer, 0 to 6 with 0 being Sunday) to specify a weekday to align to. The character string must be sufficient to make a unique case-insensitive match to the strings in options("time.day.name").
holidays
dates of holidays for business day alignment.

VALUE:

a time object whose elements are moved up or down (according to direction) so that they lie on integer multiples of k.by * by units of time starting from the beginning of the next bigger time unit (e.g. if by="days", then align to multiples of k.by days added to the first of the month; if by="hours", align to multiples of k.by hours since midnight). Note that for "weeks", "weekdays", and "bizdays", k.by is assumed to be 1 and ignored; "weeks" without week.align is equivalent to "days". Also note that k.by should be a divisor of the number of by units in the next larger time unit, or NA values will result.

SEE ALSO:

.

EXAMPLES:

x <- timeDate(c("2/11/1992 22:34", "7/8/1995 08:32"),  
       format="%a %02m/%02d/%Y %02H:%02M") 
# move to beginning of month 
timeAlign(x,"months",direction=-1) 
# move to beginning of next month 
timeAlign(x,"months",direction=1) 
# move to next multiple of 3 hours 
timeAlign(x,"hours",3) 
# move to next Friday 
timeAlign(x,"weeks", week.align="Friday")