timeAlign
Alignment of Times
Description
Aligns 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())
Arguments
x 
a time/date object.

by 
one of the following character strings, giving the units to align to:
 "milliseconds"
 "seconds"
 "minutes"
 "hours"
 "days",
 "weekdays"
 "bizdays"
 "weeks"
 "months"
 "quarters"
 "years"

k.by 
a nonzero 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 caseinsensitive match to the strings
in timeDateOptions("time.day.name").

holidays 
dates of holidays for business day alignment.

Value
returns 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 larger time unit
(for example, 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).
Notes
 for "weeks", "weekdays", and "bizdays",
k.by is assumed to be 1 and ignored.
 "weeks" without week.align is equivalent to "days".
 k.by should be a divisor of the number of
by units in the next larger time unit, or NA values
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")