Title: | Rmetrics - Chronological and Calendar Objects |
---|---|
Description: | The 'timeDate' class fulfils the conventions of the ISO 8601 standard as well as of the ANSI C and POSIX standards. Beyond these standards it provides the "Financial Center" concept which allows to handle data records collected in different time zones and mix them up to have always the proper time stamps with respect to your personal financial center, or alternatively to the GMT reference time. It can thus also handle time stamps from historical data records from the same time zone, even if the financial centers changed day light saving times at different calendar dates. |
Authors: | Diethelm Wuertz [aut] (original code), Tobias Setz [aut], Yohan Chalabi [aut], Martin Maechler [ctb] , Joe W. Byers [ctb], Georgi N. Boshnakov [cre, aut] |
Maintainer: | Georgi N. Boshnakov <[email protected]> |
License: | GPL (>= 2) |
Version: | 4041.110 |
Built: | 2024-12-21 06:47:52 UTC |
Source: | CRAN |
Package of calendar, date, time tools and utilities for Rmetrics.
This help file describes the concepts and methods behind the S4
"timeDate"
class used in Rmetrics for financial data and time
management together with the management of public and ecclesiastical
holidays.
The "timeDate"
class fulfils the conventions of the ISO 8601
standard as well as of the ANSI C and POSIX standards. Beyond
these standards it provides the "Financial Center" concept
which allows to handle data records collected in different time
zones and mix them up to have always the proper time stamps with
respect to your personal financial center, or alternatively to the GMT
reference time. It can thus also handle time stamps from historical
data records from the same time zone, even if the financial
centers changed day light saving times at different calendar
dates.
Moreover "timeDate"
is almost compatible with the "timeDate"
class in Insightful's SPlus "timeDate"
class. If you move between
the two worlds of R and SPlus, you will not have to rewrite your
code. This is important for business applications.
The "timeDate"
class offers not only date and time functionality but
it also offers sophisticated calendar manipulations for
business days, weekends, public and ecclesiastical holidays.
This help page is presented in four sections:
1. S4 "timeDate"
Class and Functions
2. Operations on "timeDate"
Objects
3. Daylight Saving Time and Financial Centers
4. Holidays and Holiday Calendars
"timeDate"
Class and Generator FunctionsDate and time stamps are represented by an S4 object of class "timeDate"
.
setClass("timeDate", representation( Data = "POSIXct", format = "character", FinCenter = "character" ))
They have three slots. The @Data
slot holds the time
stamps which are POSIXct
formatted as specified in the
@format
slot. The time stamps are local and belong to the
financial center expressed through the slot @FinCenter
.
There are several possibilities to generate a "timeDate"
object. The
most forward procedure is to use one of the following functions:
timeDate
– Creates a "timeDate"
object from scratch, timeSequence
– creates a sequence of "timeDate"
objects, timeCalendar
– creates a "timeDate"
object from calendar
atoms, Sys.timeDate
– returns the current date and time as a
"timeDate"
object.
With the function timeDate
you can create "timeDate"
objects
from scratch by specifying a character vector of time stamps and a
financial center which the character vector belongs to. "GMT" is used
by default as the reference for all date/time operations.
But you can set the variable myFinCenter
to your local
financial center reference if you want to reference dates/time to
it.
Examples:
# Show My local Financial Center - Note, by Default this is "GMT" getRmetricsOptions("myFinCenter") # Compose Character Vectors of Dates and Times: Dates <- c("1989-09-28","2001-01-15","2004-08-30","1990-02-09") Times <- c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") charvec = paste(Dates, Times) # Create a 'timeDate' object timeDate(charvec) # Create a 'timeDate' object with my financial center set to Zurich myFinCenter <- "Zurich" timeDate(charvec) # if the 'timeDate' was recorded in a different financial center, it # will be automatically converted to your financial center, # i.e. "Zurich". timeDate(charvec, zone = "Tokyo") # You can also convert a recorded 'timeDate' from your financial # center "Zurich" to another one, for example "NewYork". timeDate(charvec, FinCenter = "NewYork")
NOTE: Rmetrics has implemented an automated date/time format identifier
for many common date/time formats which tries to automatically recognise
the format for the character vector of dates and times. You can have a
look at whichFormat(charvec)
.
NOTE: Rmetrics always uses the midnight standard on dates and
times. You can see it with .midnightStandard("2008-01-31 24:00:00")
Alternatively we can create a sequence of "timeDate"
objects with the
help of the function timeSequence
. This can be done in several
ways, either by specifying the range of the data through the arguments
from
and to
, or when from
is missing, by setting
the argument length.out
of the desired series. Note in the case
of a monthly sequence, you have further options. For example you can
generate the series with the first or last day in each month, or use
more complex rules like the last or n-th Friday in every month.
Examples:
# Lets work in an international environment: setRmetricsOptions(myFinCenter = "GMT") # Your 'timeDate' is now in the Financial Center "GMT" timeDate(charvec) # Daily January 2008 Sequence: timeSequence(from = "2008-01-01", to = "2008-01-31", by = "day") # Monthly 2008 Sequence: tS = timeSequence(from = "2008-01-01", to = "2008-12-31", by = "month") tS # Do you want the last Day or the last Friday in Month Data ? timeLastDayInMonth(tS) timeLastNdayInMonth(tS, nday = 5)
A third possibility is to create "timeDate"
objects from calendar
atoms. You can specify values or vectors of equal length of integers
denoting year, month, day, hour, minute and seconds. If every day has
the same time stamp, you can just add an offset.
Examples:
# Monthly calendar for Current Year getRmetricsOptions("currentYear") timeCalendar() # Daily 'timeDate' for January data from Tokyo local time 16:00 timeCalendar(2008, m=1, d=1:31, h=16, zone="Tokyo", FinCenter="Zurich") # Or add16 hours in seconds ... timeCalendar(2008, m=1, d=1:31, zone="Tokyo", FinCenter="Zurich") + 16*3600
"timeDate"
ObjectsMany operations can be performed on "timeDate"
objects. You can add
and subtract, round and truncate, subset, coerce or transform them to
other objects. These are only few options among many others.
Math Operations
Math operations can add and subtract dates and times,
and perform logical operations on "timeDate"
objects.
Examples:
# Date and Time Now: now = Sys.timeDate() # One Hour Later: now + 3600 # Which date/time is earlier or later ? tC = timeCalendar() tR = tC + round(3600*rnorm(12)) tR > tC
Lagging
You can generate suitable lagged and iterated differences:
diff.timeDate
– Returns suitably lagged and iterated differences.
Examples:
# Monthly Dates 2008 and January 2009: tC = c(timeCalendar(2008), timeCalendar(2009)[1]) # Number of days in months and total 2008: diff(tC) sum(as.integer(diff(tC)))
Rounding and Truncating
Dates and times can be rounded or truncated. This is useful lower
frequencies than seconds, for example hourly.
round
– rounds objects of class "timeDate"
, trunc
– truncates objects of class "timeDate"
.
Examples:
# Round the Random Time Stamps to the Nearest Hour: tC = timeCalendar() tR = tC + round(3600*rnorm(12)) tR round(tR, "h") # Truncate by Hour or to the Next Full Hour:: trunc(tR, "h") trunc(tR + 3600, "h")
Subsetting
Subsetting a "timeDate"
is a very important issue in the management of
dates and times. Rmetrics offers several functions which are useful in
this context:
"["
– Extracts or replaces subsets from "timeDate"
objects,
window, cut
– extract a piece from a "timeDate"
object,
In this context it is also important to know the start
and the end
time stamp together with the total number of
time stamps.
start
– extracts the first entry of a "timeDate"
object, end
– extracts the last entry of a "timeDate"
object, length
– returns the length of a "timeDate"
object.
Examples:
# Create Monthly Calendar for next year tC = timeCalendar(getRmetricsOptions("currentYear") + 1) tC # Start, end and length of 'timeDate' objects start(tC) end(tC) length(tC) # The first Quarter - Several Alternative Solutions: tC[1:3] tC[-(4:length(tC))] window(tC, start = tC[1], end = tC[3]) cut(tC, from = tC[1], to = tC[3]) tC[tC < tC[4]] # The Quarterly Series: tC[seq(3, 12, by = 3)]
Weekdays, weekends, business days, and holidays can be easily
obtained with the following functions:
isWeekday
– tests if a date is a weekday or not, isWeekend
– tests if a date is a weekend day or not, isBizday
– tests if a date is a business day or not, isHoliday
– tests if a date is a holiday day or not.
Examples:
# A 'timeDate' Sequence around Easter 2008 Easter(2008) tS <- timeSequence(Easter(2008, -14), Easter(2008, +14)) tS # Subset weekdays and business days: tW <- tS[isWeekday(tS)]; tW dayOfWeek(tW) tB <- tS[isBizday(tS, holidayZURICH())]; tB dayOfWeek(tB)
The functions blockStart
and blockEnd
gives
time stamps for equally sized blocks.
blockStart
– Creates start dates for equally sized blocks, blockEnd
– Creates end dates for equally sized blocks.
Examples:
# 'timeDate' object for the last 365 days: tS = timeSequence(length.out = 360) tS # Subset Pointers for blocks of exactly 30 days: blockStart(tS, 30) blockEnd(tS, 30) Sys.timeDate()
Coercions and Transformations
"timeDate"
objects are not living in an isolated world. Coercions and
transformations allow "timeDate"
objects to communicate with other
formatted time stamps. Be aware that in most cases information can be
lost if the other date.time classes do not support this functionality.
There exist several methods to coerce and transform "timeDate"
objects into other objects.
as.timeDate
– Implements Use Method, as.timeDate.default
– default Method, as.timeDate.POSIXt
– returns a 'POSIX' object as "timeDate"
object, as.timeDate.Date
– returns a 'POSIX' object as "timeDate"
object.
as.character.timeDate
– Returns a "timeDate"
object as
'character' string, as.double.timeDate
– returns a "timeDate"
object as 'numeric'
object, as.data.frame.timeDate
– returns a "timeDate"
object as
'data.frame' object, as.POSIXct.timeDate
– returns a "timeDate"
object as 'POSIXct'
object, as.POSIXlt.timeDate
– returns a "timeDate"
object as 'POSIXlt'
object, as.Date.timeDate
– returns a "timeDate"
object as 'Date'
object.
Users or maintainers of other date/time classes can add their own
generic functions. For example as.timeDate.zoo
and
as.zoo.timeDate
.
Concatenations and Reorderings
It might be sometimes useful to concatenate or reorder "timeDate"
objects. The generic functions to concatenate, replicate, sort,
re-sample, unify and revert a "timeDate"
objects are :
c
– Concatenates "timeDate"
objects, rep
– replicates a "timeDate"
object, sort
– sorts a "timeDate"
object, sample
– resamples a "timeDate"
object,unique
– makes a "timeDate"
object unique, rev
– reverts a "timeDate"
object.
NOTE: The function c
of a "timeDate"
objects takes care of
possible different financial centers specific to each object to be
concatenated. In such cases, all time stamps will be transformed to
the financial center of the first time stamp used in the
concatenation:
Examples:
# Concatenate the local time stamps to Zurich time ... ZH = timeDate("2008-01-01 16:00:00", zone = "GMT", FinCenter = "Zurich") NY = timeDate("2008-01-01 18:00:00", zone = "GMT", FinCenter = "NewYork") c(ZH, NY) c(NY, ZH) # Rordering: tC = timeCalendar(); tC tS = sample(tC); tS tO = sort(tS); tO tV = rev(tO); tV tU = unique(c(tS, tS)); tU
Each financial center worldwide has a function
which returns Daylight Saving Time Rules. Almost 400
prototypes are made available through the Olson time zone
data base. The cities and regions can be listed using the
command listFinCenter
. The DST rules for specific
financial center can be viewed by their name, e.g. Zurich()
.
Additional financial centers can be added by the user taking care
of the format specification of the DST functions.
Setting Financial Centers
All time stamps are handled according to the time zone and daylight
saving time rules specified by the center through the variable
myFinCenter
. This variable is set by default to "GMT"
but can be changed to your local financial center or to any other
financial center you want to use.
NOTE: By setting the financial center to a continent/city which
lies outside of the time zone used by your computer does not change
any time settings or environment variables used by your computer.
To change the name of a financial center from one setting to another
just assign to the variable myFinCenter
the desired name
of the city:
Examples:
# What is my current Financial Center ? getRmetricsOptions("myFinCenter") # Change to Zurich: setRmetricsOptions(myFinCenter = "Zurich") getRmetricsOptions("myFinCenter")
From now on, all dates and times are handled within the middle European time zone and the DST rules which are valid for Zurich.
List of Financial Centers
There are many other financial centers supported by Rmetrics. They
can be displayed by the function listFinCenter
. You can also
display partial lists with wildcards and regular expressions:
Examples:
# List all supported Financial Centers Worldwide: listFinCenter() # List European Financial Centers: listFinCenter("Europe/*")
DST Rules
For each financial center a function is available. It keeps the information of the time zones and the DST rules. The functions return a data.frame with 4Columns :
Zurich offSet isdst TimeZone ... 62 2008-03-30 01:00:00 7200 1 CEST 63 2008-10-26 01:00:00 3600 0 CET ...
The first column describes when the time was changed, the second
gives the offset to "GMT", the third returns the daylight savings time
flag which is positive if in force, zero if not, and negative if
unknown. The last column gives the name of the time zone. You can
have a look at the function Zurich()
:
Examples:
# Show the DST Rules for Zurich: Zurich() # List European Financial Centers: listFinCenter("Europe/*")
It is non-trivial to implement function for business days, weekends and holidays. It is not difficult in an algorithmic sense, but it can become tedious to implement the rules of the calendar themselves, for example the date of Easter.
In the following section we briefly summarise the functions which can calculate dates of ecclesiastical and public holidays. With the help of these functions we can also create business and holiday calendars.
Special Dates:
The implemented functions can compute the last day in a given
month and year, the dates in a month that is a n-day
(e.g. n- = Sun) on or after a given date, the dates in a
month that is a n-day on or before a specified date,
the n-th occurrences of a n-day for a specified year/month vectors,
or the last n-day for a specified year/month value or vector.
NOTE: n-days are numbered from 0 to 6 where 0 correspond to the
Sunday and 6 to the Saturday.
timeFirstDayInMonth
– Computes the first day in a given month
and year, timeLastDayInMonth
– Computes the last day in a given month
and year, timeFirstDayInQuarter
– Computes the first day in a given
quarter and year, timeLastDayInQuarter
– Computes the last day in a given
quarter and year,
timeNdayOnOrAfter
– Computes date that is a "on-or-after"
n-day, timeNdayOnOrBefore
–b Computes date that is a "on-or-before"
n-day,
timeNthNdayInMonth
– Computes n-th occurrence of a n-day in
year/month, timeLastNdayInMonth
– Computes the last n-day in
year/month.
Holidays:
Holidays may have two origins: ecclesiastical or public/federal. The ecclesiastical calendars of Christian churches are based on cycles of movable and immovable feasts. Christmas, December 25, is the principal immovable feast. Easter is the principal movable feast, and dates of most of the other movable feasts are determined with respect to Easter. However, the movable feasts of the Advent and Epiphany seasons are Sundays reckoned from Christmas and the Feast of the Epiphany, respectively.
Examples:
# List Holidays available in Rmetrics listHolidays() # The date of Easter for the next 5 years: currentYear <- getRmetricsOptions("currentYear") Easter(currentYear:(currentYear+5))
Holiday Calendars:
holidayZURICH
– Zurich Business Calendar, holidayNYSE
– NYSE Stock Exchange Holiday Calendar, holidayZURICH
– TSX Holiday Calendar.
We would like to thank all Rmetrics users who gave us many additional information concerning local holidays.
Bateman R., (2000); Time Functionality in the Standard C Library, Novell AppNotes, September 2000 Issue, 73–85.
Becker R.A., Chambers J.M., Wilks A.R. (1988); The New S Language, Wadsworth & Brooks/Cole.
ISO-8601, (1988); Data Elements and Interchange Formats - Information Interchange, Representation of Dates and Time, International Organization for Standardization, Reference Number ISO 8601, 14 pages.
James D.A., Pregibon D. (1992), Chronological Objects for Data Analysis, Reprint.
Ripley B.D., Hornik K. (2001); Date-Time Classes, R-News, Vol. 1/2 June 2001, 8–12.
Zivot, E., Wang J. (2003); Modeling Financial Time Series with S-Plus, Springer, New-York.
Returns endpoint indexes from a "timeDate"
object.
.endpoints(x, on = c("months", "years", "quarters", "weeks", "days", "hours", "minutes", "seconds"), k=1)
.endpoints(x, on = c("months", "years", "quarters", "weeks", "days", "hours", "minutes", "seconds"), k=1)
x |
a |
on |
the periods endpoints to find as a character string. Select from:
|
k |
along every k-th element. |
.endpoints
returns an integer vector corresponding to the last
observation in each period specified by on
, with a zero added
to the beginning of the vector, and the index of the last observation
in x
at the end.
an integer vector of endpoints beginning with 0 and ending with the
value equal to the length of the x
argument
Jeff Ryan, modified by Diethelm Wuertz for "timeDate"
objects.
## endpoints # Weekly Endpoints .endpoints(timeCalendar(), on="w")
## endpoints # Weekly Endpoints .endpoints(timeCalendar(), on="w")
Aligns a "timeDate"
object to regular date/time stamps.
## S4 method for signature 'timeDate' align(x, by = "1d", offset = "0s") alignDaily(x, include.weekends=FALSE) alignMonthly(x, include.weekends=FALSE) alignQuarterly(x, include.weekends=FALSE)
## S4 method for signature 'timeDate' align(x, by = "1d", offset = "0s") alignDaily(x, include.weekends=FALSE) alignMonthly(x, include.weekends=FALSE) alignQuarterly(x, include.weekends=FALSE)
x |
an object of class |
by |
a character string formed from an integer length and
a period identifier. Valid values are
"w", "d", "h", "m", "s", for
weeks, days, hours, minutes and seconds. For example
a bi-weekly period is expressed as |
offset |
a character string to set an offset formed from an integer
length and a period identifier in the same way as for
argument |
include.weekends |
logical value indicating whether weekends should be included. |
The functions alignDaily
, alignMonthly
,
alignMonthly
are simple to use functions which
generate end-of-day, end-of-month, and end-of quarter
"timeDate"
objects. Weekends are excluded by
default. Optionally they can be added setting the
argument include.weekends = TRUE
.
an object of class "timeDate"
## align # align bi-weekly with a 3 days offset (tC <- timeCalendar()) align(tC, by = "2w", offset = "3d") ## alignDaily # simple to use functions alignDaily(tC) alignDaily(tC, include.weekends = TRUE) # align to end-of-month dates alignMonthly(tC)
## align # align bi-weekly with a 3 days offset (tC <- timeCalendar()) align(tC, by = "2w", offset = "3d") ## alignDaily # simple to use functions alignDaily(tC) alignDaily(tC, include.weekends = TRUE) # align to end-of-month dates alignMonthly(tC)
Creates start (end) dates for equally sized "timeDate"
blocks.
blockStart(x, block = 20) blockEnd(x, block = 20)
blockStart(x, block = 20) blockEnd(x, block = 20)
block |
an integer value specifying the length in number of records for numerically sized blocks of dates. |
x |
an object of class |
The functions blockStart
and blockEnd
create vectors of
start and end values for equally sized "timeDate"
blocks. Note,
the functions are event counters and not a time counter between
measuring time intervals between start and end dates! For equally
sized blocks in time one has before to align the time stamps in equal
time differences.
an object of class "timeDate"
## timeSequence # 360 Days Series: tS <- timeSequence(to = "2022-09-23 09:39:23", length.out = 360) ## blockStart | blockEnd Start <- blockStart(tS, 30) End <- blockEnd(tS, 30) Start End End - Start
## timeSequence # 360 Days Series: tS <- timeSequence(to = "2022-09-23 09:39:23", length.out = 360) ## blockStart | blockEnd Start <- blockStart(tS, 30) End <- blockEnd(tS, 30) Start End End - Start
Concatenates "timeDate"
objects.
## S3 method for class 'timeDate' c(..., recursive = FALSE)
## S3 method for class 'timeDate' c(..., recursive = FALSE)
recursive |
a logical. If recursive is set to |
... |
arguments passed to other methods. |
an object of class "timeDate"
## timeCalendar # Create Character Vectors: GMT = timeCalendar(zone = "GMT", FinCenter = "GMT") + 16*3600 ZUR = timeCalendar(zone = "GMT", FinCenter = "Zurich") + 16*3600 ## c # concatenate and replicate timeDate objects sort(c(GMT, ZUR)) sort(c(ZUR, GMT))
## timeCalendar # Create Character Vectors: GMT = timeCalendar(zone = "GMT", FinCenter = "GMT") + 16*3600 ZUR = timeCalendar(zone = "GMT", FinCenter = "Zurich") + 16*3600 ## c # concatenate and replicate timeDate objects sort(c(GMT, ZUR)) sort(c(ZUR, GMT))
Coerce and transform objects of class "timeDate"
.
## S3 method for class 'timeDate' as.character(x, ...) ## S3 method for class 'timeDate' as.double(x, units = c("auto", "secs", "mins", "hours", "days", "weeks"), ...) ## S3 method for class 'timeDate' as.data.frame(x, ...) ## S3 method for class 'timeDate' as.POSIXct(x, tz = "", ...) ## S3 method for class 'timeDate' as.POSIXlt(x, tz = "", ...) ## S3 method for class 'timeDate' as.Date(x, method = c("trunc", "round", "next"), ...)
## S3 method for class 'timeDate' as.character(x, ...) ## S3 method for class 'timeDate' as.double(x, units = c("auto", "secs", "mins", "hours", "days", "weeks"), ...) ## S3 method for class 'timeDate' as.data.frame(x, ...) ## S3 method for class 'timeDate' as.POSIXct(x, tz = "", ...) ## S3 method for class 'timeDate' as.POSIXlt(x, tz = "", ...) ## S3 method for class 'timeDate' as.Date(x, method = c("trunc", "round", "next"), ...)
x |
an object of class |
units |
a character string denoting the date/time units in which the results are desired. |
tz |
inputs the time zone to POSIX objects, i.e. the time zone,
|
method |
a character string denoting the method how to determine the dates. |
... |
arguments passed to other methods. |
an object from the designated target class
timeDate
and as.timeDate
for creation of and conversion to "timeDate"
objects
## timeDate tC = timeCalendar() ## convert 'timeDate' to a character vector as.character(tC)
## timeDate tC = timeCalendar() ## convert 'timeDate' to a character vector as.character(tC)
A variable containing the current year.
It is not allowed to change this variable.
## currentYear getRmetricsOptions("currentYear")
## currentYear getRmetricsOptions("currentYear")
Functions for about 400 cities and regions which return daylight saving time rules and time zone offsets.
As a selection of these functions:
Adelaide Algiers Amsterdam Anchorage Andorra Athens Auckland Bahrain Bangkok Beirut Belfast Belgrade Berlin Bogota Bratislava Brisbane Brussels Bucharest Budapest BuenosAires Cairo Calcutta Caracas Casablanca Cayman Chicago Copenhagen Darwin Denver Detroit Dubai Dublin Eastern Edmonton Frankfurt Helsinki HongKong Honolulu Indianapolis Istanbul Jakarta Jerusalem Johannesburg Kiev KualaLumpur Kuwait Lagos Lisbon Ljubljana London LosAngeles Luxembourg Madrid Manila Melbourne MexicoCity Monaco Montreal Moscow Nairobi Nassau NewYork Nicosia Oslo Pacific Paris Perth Prague Riga Riyadh Rome Seoul Shanghai Singapore Sofia Stockholm Sydney Taipei Tallinn Tehran Tokyo Tunis Vaduz Vancouver Vienna Vilnius Warsaw Winnipeg Zagreb Zurich, ...
There are currently two synonyms available "Pacific" for Los Angeles and "Eastern" for New York.
Specific time zones (AST
, CET
, CST
, EET
,
EST
, MST
and PST
) are also available.
Note we leave the space in all double named cities like New York or Hong Kong and use an underscore for it.
All the entries are retrieved from the tzdata library which is available under GNU GPL licence.
## DST rules for Zurich head(Zurich()) tail(Zurich()) ## list all available centers listFinCenter()
## DST rules for Zurich head(Zurich()) tail(Zurich()) ## list all available centers listFinCenter()
Returns the days of the week of the data in a "timeDate"
object.
dayOfWeek(x)
dayOfWeek(x)
x |
an object of class |
a character vector giving the days of the week corresponding to the
elements of x
. The names are in English, abbreviated to
three letters.
## timeCalendar tC <- timeCalendar(2022) ## the days of the year dayOfWeek(tC)
## timeCalendar tC <- timeCalendar(2022) ## the days of the year dayOfWeek(tC)
Returns the days of the year of the data in a "timeDate"
object.
dayOfYear(x)
dayOfYear(x)
x |
an object of class |
vector of integers representing the number of days since the beginning of the year. For January, 1st it is one.
## timeCalendar tC <- timeCalendar(2022) ## the days of the year dayOfYear(tC)
## timeCalendar tC <- timeCalendar(2022) ## the days of the year dayOfYear(tC)
Returns suitably lagged and iterated differences.
## S3 method for class 'timeDate' diff(x, lag = 1, differences = 1, ...)
## S3 method for class 'timeDate' diff(x, lag = 1, differences = 1, ...)
x |
an object of class |
lag |
an integer indicating which lag to use. |
differences |
an integer indicating the order of the difference. |
... |
arguments passed to other methods. |
For the function, diff.timeDate
, if x
is a vector of
length n
and differences=1
, then the computed result is
equal to the successive differences x[(1+lag):n] -
x[1:(n-lag)]
. If difference
is larger than one this algorithm
is applied recursively to x
. Note that the returned value is a
vector which is shorter than x
.
## create character vectors dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## timeDate GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") + 24*3600 GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR ## diff # suitably lagged and iterated differences diff(GMT) diff(GMT, lag = 2) diff(GMT, lag = 1, diff = 2)
## create character vectors dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## timeDate GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") + 24*3600 GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR ## diff # suitably lagged and iterated differences diff(GMT) diff(GMT, lag = 2) diff(GMT, lag = 1, diff = 2)
Returns the difference of two 'timeDate' objects.
difftimeDate(time1, time2, units = c("auto", "secs", "mins", "hours", "days", "weeks"))
difftimeDate(time1, time2, units = c("auto", "secs", "mins", "hours", "days", "weeks"))
time1 , time2
|
two objects objects of class |
units |
a character string denoting the date/time units in which the results are desired. |
difftimeDate
, takes a difference of two "timeDate"
objects and returns an object of class "difftime"
with an
attribute indicating the units.
## create character vectors dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts ## timeDate GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ## diff # suitably lagged and iterated differences difftimeDate(GMT[1:2], GMT[-(1:2)])
## create character vectors dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts ## timeDate GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ## diff # suitably lagged and iterated differences difftimeDate(GMT[1:2], GMT[-(1:2)])
Get dates of early closings of the New York Stock exchange (NYSE).
earlyCloseNYSE(year)
earlyCloseNYSE(year)
year |
a vector of integers representing years (4 digits). |
earlyCloseNYSE
gives the dates and times when NYSE was closed
early. Some of these closing are scheduled (e.g. at 1pm on the day
before or after a holiday), others are unscheduled.
The information is incomplete, particularly after 2011. For those dates the values are computed using explicitly declared rules or, if not available, ones derived from recent years.
a "timeDate"
object containing the dates (with closing times)
of early closings
The function is somewhat experimental but the type of the result will not change.
Georgi N. Boshnakov
https://archive.fo/XecDq
holidayNYSE
for a list of NYSE holidays
earlyCloseNYSE(1990) earlyCloseNYSE(2022:2024) # early closings holidayNYSE(2022:2024) # holidays ## early closings & holidays combined c(earlyCloseNYSE(2022:2024), holidayNYSE(2022:2024))
earlyCloseNYSE(1990) earlyCloseNYSE(2022:2024) # early closings holidayNYSE(2022:2024) # holidays ## early closings & holidays combined c(earlyCloseNYSE(2022:2024), holidayNYSE(2022:2024))
Returns the date of Easter.
Easter(year = getRmetricsOptions("currentYear"), shift = 0)
Easter(year = getRmetricsOptions("currentYear"), shift = 0)
year |
an integer value or integer vector for the year(s). |
shift |
an integer value, the number of days shifted from the Easter date. Negative integers are allowed. |
Holidays may have two origins, ecclesiastical and public/federal. The ecclesiastical calendars of Christian churches are based on cycles of moveable and immoveable feasts. Christmas, December 25th, is the principal immoveable feast. Easter is the principal moveable feast, and dates of most other moveable feasts are determined with respect to Easter.
The date of Easter is evaluated by a complex procedure whose detailed explanation goes beyond this description. The reason that the calculation is so complicate is, because the date of Easter is linked to (an inaccurate version of) the Hebrew calendar. But nevertheless a short answer to the question "When is Easter?" is the following: Easter Sunday is the first Sunday after the first full moon after vernal equinox. For the long answer we refer to Toendering (1998).
The algorithm computes the date of Easter based on the algorithm of Oudin (1940). It is valid for any Gregorian Calendar year.
the date of Easter as an object of class "timeDate"
Doesn't have options to compute Eastern Orthodox Easter dates.
## Easter # current year Easter() ## From 2001 to 2010: Easter(2001:2010)
## Easter # current year Easter() ## From 2001 to 2010: Easter(2001:2010)
Get or set the financial center of a "timeDate"
object.
## S4 method for signature 'timeDate' finCenter(x) ## S4 replacement method for signature 'timeDate' finCenter(x) <- value
## S4 method for signature 'timeDate' finCenter(x) ## S4 replacement method for signature 'timeDate' finCenter(x) <- value
x |
a |
value |
a character with the location of the financial center named as "continent/city". |
"timeDate"
objects store the time in the GMT time zone. The
financial center specifies a location whose local time is to be used
to format the object, e.g., for printing.
finCenter
gives the financial center associated with a
‘timeDate’ object. The assignment form changes it to the
specified value. Both functions are S4 generics. This page describes
the methods defined in package ‘timeDate’.
date <- timeDate("2008-01-01") finCenter(date) <- "GMT" date format(date) finCenter(date) <- "Zurich" date format(date)
date <- timeDate("2008-01-01") finCenter(date) <- "GMT" date format(date) finCenter(date) <- "Zurich" date format(date)
Computes the first/last day in a given month/quarter.
timeFirstDayInMonth(charvec, format = "%Y-%m-%d", zone = "", FinCenter = "") timeLastDayInMonth(charvec, format = "%Y-%m-%d", zone = "", FinCenter = "") timeFirstDayInQuarter(charvec, format = "%Y-%m-%d", zone = "", FinCenter = "") timeLastDayInQuarter(charvec, format = "%Y-%m-%d", zone = "", FinCenter = "")
timeFirstDayInMonth(charvec, format = "%Y-%m-%d", zone = "", FinCenter = "") timeLastDayInMonth(charvec, format = "%Y-%m-%d", zone = "", FinCenter = "") timeFirstDayInQuarter(charvec, format = "%Y-%m-%d", zone = "", FinCenter = "") timeLastDayInQuarter(charvec, format = "%Y-%m-%d", zone = "", FinCenter = "")
charvec |
a character vector of dates and times. |
format |
the format specification of the input character vector. |
zone |
the time zone or financial center where the data were recorded. |
FinCenter |
a character with the location of the financial center named as "continent/city". |
The functions timeLastDayInMonth
and timeLastDayInMonth
return the last or first day, respectively, in a given month and year.
The same functionality for quarterly time horizons is returned by the
functions timeLastDayInQuarter
and timeLastDayInQuarter
.
an object of class "timeDate"
## date as character string charvec = "2006-04-16" myFinCenter = getRmetricsOptions("myFinCenter") ## timeLastDayInMonth # What date has the last day in a month for a given date? timeLastDayInMonth(charvec, format = "%Y-%m-%d", zone = myFinCenter, FinCenter = myFinCenter) timeLastDayInMonth(charvec) timeLastDayInMonth(charvec, FinCenter = "Zurich") ## timeFirstDayInMonth # What date has the first day in a month for a given date? timeFirstDayInMonth(charvec) ## timeLastDayInQuarter # What date has the last day in a quarter for a given date? timeLastDayInQuarter(charvec) ## timeFirstDayInQuarter # What date has the first day in a quarter for a given date? timeFirstDayInQuarter(charvec) ## timeNdayOnOrAfter # What date has the first Monday on or after March 15, 1986? timeNdayOnOrAfter("1986-03-15", 1) ## timeNdayOnOrBefore # What date has Friday on or before April 22, 1977? timeNdayOnOrBefore("1986-03-15", 5) ## timeNthNdayInMonth # What date is the second Monday in April 2004? timeNthNdayInMonth("2004-04-01", 1, 2) ## timeLastNdayInMonth # What date has the last Tuesday in May, 1996? timeLastNdayInMonth("1996-05-01", 2)
## date as character string charvec = "2006-04-16" myFinCenter = getRmetricsOptions("myFinCenter") ## timeLastDayInMonth # What date has the last day in a month for a given date? timeLastDayInMonth(charvec, format = "%Y-%m-%d", zone = myFinCenter, FinCenter = myFinCenter) timeLastDayInMonth(charvec) timeLastDayInMonth(charvec, FinCenter = "Zurich") ## timeFirstDayInMonth # What date has the first day in a month for a given date? timeFirstDayInMonth(charvec) ## timeLastDayInQuarter # What date has the last day in a quarter for a given date? timeLastDayInQuarter(charvec) ## timeFirstDayInQuarter # What date has the first day in a quarter for a given date? timeFirstDayInQuarter(charvec) ## timeNdayOnOrAfter # What date has the first Monday on or after March 15, 1986? timeNdayOnOrAfter("1986-03-15", 1) ## timeNdayOnOrBefore # What date has Friday on or before April 22, 1977? timeNdayOnOrBefore("1986-03-15", 5) ## timeNthNdayInMonth # What date is the second Monday in April 2004? timeNthNdayInMonth("2004-04-01", 1, 2) ## timeLastNdayInMonth # What date has the last Tuesday in May, 1996? timeLastNdayInMonth("1996-05-01", 2)
Formats "timeDate"
objects as ISO conform character strings.
## S3 method for class 'timeDate' format(x, format = "", tz = "", usetz = FALSE, ...)
## S3 method for class 'timeDate' format(x, format = "", tz = "", usetz = FALSE, ...)
format |
a character string describing the format. |
tz |
a timezone specification to be used for the conversion. |
usetz |
a logical. |
x |
an object of class |
... |
arguments passed to other methods. |
an ISO conforming formatted character string
as.character
## timeCalendar # Time Calendar 16:00 tC = timeCalendar() + 16*3600 tC ## format as ISO character string format(tC)
## timeCalendar # Time Calendar 16:00 tC = timeCalendar() + 16*3600 tC ## format as ISO character string format(tC)
Returns the date of a holiday.
holiday(year = getRmetricsOptions("currentYear"), Holiday = "Easter")
holiday(year = getRmetricsOptions("currentYear"), Holiday = "Easter")
Holiday |
the function name (a character string or unquoted) of an ecclesiastical or public holiday in the G7 countries or Switzerland, see the list below. Can also be a character vector to specify several holidays. |
year |
an integer value or vector of years, formatted as |
Easter is the central ecclesiastical holiday. Many other holidays
are related to this feast. The function Easter
computes
the dates of Easter and related ecclesiastical holidays for the
requested year vector. holiday
calculates the dates of
ecclesiastical or publich holidays in the G7 countries, e.g.
holiday(2003, "GoodFriday")
. Rmetrics contains holiday
functions automatically loaded at startup time. The user can
add easily additional holiday functions. The information for
the holidays is collected from several web pages about holiday
calendars.
The following ecclesiastical and public [HOLIDAY]
functions
in the G7 countries and Switzerland are available:
Holidays Related to Easter:
Septuagesima, Quinquagesima, AshWednesday, PalmSunday,
GoodFriday, EasterSunday, Easter, EasterMonday,
RogationSunday, Ascension, Pentecost, PentecostMonday,
TrinitySunday CorpusChristi.
Holidays Related to Christmas:
ChristTheKing, Advent1st, Advent1st, Advent3rd,
Advent4th, ChristmasEve, ChristmasDay, BoxingDay,
NewYearsDay.
Other Ecclestical Feasts:
SolemnityOfMary, Epiphany, PresentationOfLord,
Annunciation, TransfigurationOfLord, AssumptionOfMary,
AssumptionOfMary, BirthOfVirginMary, CelebrationOfHolyCross,
MassOfArchangels, AllSaints, AllSouls.
CHZurich - Public Holidays:
CHBerchtoldsDay, CHSechselaeuten, CHAscension,
CHConfederationDay, CHKnabenschiessen.
GBLondon - Public Holidays:
GBEarlyMayBankHoliday, GBSpringBankHoliday GBSummerBankHoliday, GBNewYearsEve.
(The deprecated GBMayDay and GBBankHoliday are still available but
strongly discouraged. Instead, use GBEarlyMayBankHoliday and
GBSpringBankHoliday, respectively)
DEFrankfurt - Public Holidays:
DEAscension, DECorpusChristi, DEGermanUnity, DEChristmasEve,
DENewYearsEve.
FRParis - Public Holidays:
FRFetDeLaVictoire1945, FRAscension, FRBastilleDay,
FRAssumptionVirginMary, FRAllSaints, FRArmisticeDay.
ITMilano - Public Holidays:
ITEpiphany, ITLiberationDay, ITRepublicAnniversary,
ITAssumptionOfVirginMary, ITAllSaints, ITWWIVictoryAnniversary,
ITStAmrose, ITImmaculateConception.
USNewYork/USChicago - Public Holidays:
USNewYearsDay, USInaugurationDay, USMLKingsBirthday,
USLincolnsBirthday, USWashingtonsBirthday, USMemorialDay,
USIndependenceDay, USLaborDay, USColumbusDay, USElectionDay,
USVeteransDay, USThanksgivingDay, USChristmasDay,
USCPulaskisBirthday, USGoodFriday,
USJuneteenthNationalIndependenceDay.
CAToronto/CAMontreal - Public Holidays:
CAVictoriaDay, CACanadaDay, CACivicProvincialHoliday,
CALabourDay, CAThanksgivingDay, CaRemembranceDay.
JPTokyo/JPOsaka - Public Holidays:
JPNewYearsDay, JPGantan, JPBankHolidayJan2, JPBankHolidayJan3,
JPComingOfAgeDay, JPSeijinNoHi, JPNatFoundationDay,
JPKenkokuKinenNoHi, JPGreeneryDay, JPMidoriNoHi,
JPConstitutionDay, JPKenpouKinenBi, JPNationHoliday,
JPKokuminNoKyujitu, JPChildrensDay, JPKodomoNoHi,
JPMarineDay, JPUmiNoHi, JPRespectForTheAgedDay,
JPKeirouNoHi, JPAutumnalEquinox, JPShuubun-no-hi,
JPHealthandSportsDay, JPTaiikuNoHi, JPNationalCultureDay,
JPBunkaNoHi, JPThanksgivingDay, JPKinrouKanshaNohi,
JPKinrou-kansha-no-hi, JPEmperorsBirthday,
JPTennou-tanjyou-bi, JPTennou-tanjyou-bi.
JPMountainDay
an object of class "timeDate"
## holiday # Dates for GoodFriday from 2000 until 2005: holiday(2000:2005, "GoodFriday") holiday(2000:2005, GoodFriday) # same (GoodFriday is a function) # Good Friday and Easter holiday(2000:2005, c("GoodFriday", "Easter")) holiday(2000:2005, c(GoodFriday, Easter)) ## Easter Easter(2000:2005) ## GoodFriday GoodFriday(2000:2005) Easter(2000:2005, -2)
## holiday # Dates for GoodFriday from 2000 until 2005: holiday(2000:2005, "GoodFriday") holiday(2000:2005, GoodFriday) # same (GoodFriday is a function) # Good Friday and Easter holiday(2000:2005, c("GoodFriday", "Easter")) holiday(2000:2005, c(GoodFriday, Easter)) ## Easter Easter(2000:2005) ## GoodFriday GoodFriday(2000:2005) Easter(2000:2005, -2)
A collection of functions giving holiday dates in the G7 countries and Switzerland.
Septuagesima(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Quinquagesima(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) AshWednesday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) PalmSunday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GoodFriday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) EasterSunday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) EasterMonday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) RogationSunday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Ascension(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Pentecost(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) PentecostMonday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) TrinitySunday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CorpusChristi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ChristTheKing(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Advent1st(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Advent2nd(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Advent3rd(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Advent4th(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ChristmasEve(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ChristmasDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) BoxingDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) NewYearsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) SolemnityOfMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Epiphany(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) PresentationOfLord(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Annunciation(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) TransfigurationOfLord(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) AssumptionOfMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) BirthOfVirginMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CelebrationOfHolyCross(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) MassOfArchangels(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) AllSaints(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) AllSouls(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) LaborDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CHBerchtoldsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CHSechselaeuten(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CHAscension(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CHConfederationDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CHKnabenschiessen(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GBMayDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GBEarlyMayBankHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GBBankHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GBSpringBankHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GBSummerBankHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GBMilleniumDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) DEAscension(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) DECorpusChristi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) DEGermanUnity(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) DEChristmasEve(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) DENewYearsEve(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) FRFetDeLaVictoire1945(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) FRAscension(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) FRBastilleDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) FRAssumptionVirginMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) FRAllSaints(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) FRArmisticeDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ITEpiphany(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ITLiberationDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ITAssumptionOfVirginMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ITAllSaints(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ITStAmrose(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ITImmaculateConception(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USDecorationMemorialDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USPresidentsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USNewYearsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USInaugurationDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USMLKingsBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USLincolnsBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USWashingtonsBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USMemorialDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USIndependenceDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USLaborDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USColumbusDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USElectionDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USVeteransDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USThanksgivingDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USChristmasDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USCPulaskisBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USGoodFriday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USJuneteenthNationalIndependenceDay( year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CAVictoriaDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CACanadaDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CACivicProvincialHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CALabourDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CAThanksgivingDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CaRemembranceDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPVernalEquinox(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPNewYearsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPGantan(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPBankHolidayJan2(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPBankHolidayJan3(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPComingOfAgeDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPSeijinNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPNatFoundationDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPKenkokuKinenNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPGreeneryDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPMidoriNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPConstitutionDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPKenpouKinenBi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPNationHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPKokuminNoKyujitu(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPChildrensDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPKodomoNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPMarineDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPUmiNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPRespectForTheAgedDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPKeirouNOhi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPMountainDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPAutumnalEquinox(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPShuubunNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPHealthandSportsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPTaiikuNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPNationalCultureDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPBunkaNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPThanksgivingDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPKinrouKanshaNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPEmperorsBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPTennouTanjyouBi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPBankHolidayDec31(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) InternationalWomensDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...)
Septuagesima(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Quinquagesima(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) AshWednesday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) PalmSunday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GoodFriday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) EasterSunday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) EasterMonday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) RogationSunday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Ascension(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Pentecost(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) PentecostMonday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) TrinitySunday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CorpusChristi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ChristTheKing(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Advent1st(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Advent2nd(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Advent3rd(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Advent4th(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ChristmasEve(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ChristmasDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) BoxingDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) NewYearsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) SolemnityOfMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Epiphany(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) PresentationOfLord(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) Annunciation(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) TransfigurationOfLord(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) AssumptionOfMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) BirthOfVirginMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CelebrationOfHolyCross(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) MassOfArchangels(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) AllSaints(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) AllSouls(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) LaborDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CHBerchtoldsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CHSechselaeuten(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CHAscension(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CHConfederationDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CHKnabenschiessen(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GBMayDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GBEarlyMayBankHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GBBankHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GBSpringBankHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GBSummerBankHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) GBMilleniumDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) DEAscension(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) DECorpusChristi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) DEGermanUnity(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) DEChristmasEve(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) DENewYearsEve(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) FRFetDeLaVictoire1945(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) FRAscension(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) FRBastilleDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) FRAssumptionVirginMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) FRAllSaints(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) FRArmisticeDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ITEpiphany(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ITLiberationDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ITAssumptionOfVirginMary(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ITAllSaints(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ITStAmrose(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) ITImmaculateConception(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USDecorationMemorialDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USPresidentsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USNewYearsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USInaugurationDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USMLKingsBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USLincolnsBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USWashingtonsBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USMemorialDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USIndependenceDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USLaborDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USColumbusDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USElectionDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USVeteransDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USThanksgivingDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USChristmasDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USCPulaskisBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USGoodFriday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) USJuneteenthNationalIndependenceDay( year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CAVictoriaDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CACanadaDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CACivicProvincialHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CALabourDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CAThanksgivingDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) CaRemembranceDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPVernalEquinox(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPNewYearsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPGantan(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPBankHolidayJan2(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPBankHolidayJan3(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPComingOfAgeDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPSeijinNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPNatFoundationDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPKenkokuKinenNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPGreeneryDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPMidoriNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPConstitutionDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPKenpouKinenBi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPNationHoliday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPKokuminNoKyujitu(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPChildrensDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPKodomoNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPMarineDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPUmiNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPRespectForTheAgedDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPKeirouNOhi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPMountainDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPAutumnalEquinox(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPShuubunNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPHealthandSportsDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPTaiikuNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPNationalCultureDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPBunkaNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPThanksgivingDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPKinrouKanshaNoHi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPEmperorsBirthday(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPTennouTanjyouBi(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) JPBankHolidayDec31(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...) InternationalWomensDay(year = getRmetricsOptions("currentYear"), value = "timeDate", na_drop = TRUE, ...)
year |
an integer value or vector of year numbers including the
century. These are integers of the form |
value |
the class of the returned value. If |
na_drop |
how to treat |
... |
further arguments for |
This help page discusses the public and ecclesiastical holidays per
se. Some holidays fall by definition on a working day or a particular
day of the week. For holidays that fall on weekends many countries
have rules to declare a close by weekday a holiday. The functions here
do not consider such issues but they are handled by the
holidayXXX
functions (e.g., holidayLONDON
), see their
help pages.
Public holidays change over time as new ones are introduced, dropped or move to different days. When a holiday date is requested for a year when it did not exist, what should be returned? The same question arises when the information is not available in this package.
The ecclesiastical holidays are computed by traditional rules and in practice should be correct for all years.
Traditionally, package timeDate was computing the dates of the holidays according to the current rules. In versions of package timeDate greater than 4022.108 historical information was added for England and Japan holidays. The updated functions return the dates according to the rules for the particular years.
For future years the returned dates are always computed accoding to the current rules.
For years before the first available rules, the default is to use those rules, whether the holiday existed or not.
Argument na_drop
can be used to control this. If na_drop
is TRUE
, an entry will not be incuded in the result at all. If
na_drop
is FALSE
the value for years when the holiday
didn't exist will be NA
. If it is a character string, the
default, the closest available rules will be used.
Not all functions respect argument na_drop
. In that case they
act as if na_drop
is a character string.
The deprecated GBMayDay
and GBBankHoliday
are still
available but strongly discouraged. Instead, use
GBEarlyMayBankHoliday
and GBSpringBankHoliday
,
respectively.
the date of the requested holiday as a "timeDate"
object
The holiday information for most countries is incomplete. Contributions are welcome. Please include references for your sources, whenever possible.
## CHSechselaeuten - # Sechselaeuten a half Day Bank Holiday in Switzerland CHSechselaeuten(2000:2010) CHSechselaeuten(getRmetricsOptions("currentYear")) ## German Unification Day: DEGermanUnity(getRmetricsOptions("currentYear"))
## CHSechselaeuten - # Sechselaeuten a half Day Bank Holiday in Switzerland CHSechselaeuten(2000:2010) CHSechselaeuten(getRmetricsOptions("currentYear")) ## German Unification Day: DEGermanUnity(getRmetricsOptions("currentYear"))
Returns bank holidays in London.
holidayLONDON(year = getRmetricsOptions("currentYear"))
holidayLONDON(year = getRmetricsOptions("currentYear"))
year |
an integer value or vector of years, formatted as |
There are currently 8 bank holidays in Britain every year: New Year's Day, Good Friday, Easter Monday, Early Spring Holiday (first Monday of May), Spring Holiday (Last Monday of May), Summer Holiday (Last Monday of August), Christmas Day and Boxing Day.
Some of these holidays are referred also by alternative names or may have had other names in the past. Also the rules according to which the dates for some of them are calculated have changed over time.
Occasionaly there are one-off special holidays, usually related to significant Royal events. Also as one-off, the dates of some holidays are sometimes moved. For example, the Early spring holiday was moved several times to 8th May to coincide with Victory day on big anniversaries.
an object of class "timeDate"
.
Original function contributed by Menon Murali; amended, corrected and rewritten by Georgi N. Boshnakov
## holidayLONDON holidayLONDON() holidayLONDON(2008:2010)
## holidayLONDON holidayLONDON() holidayLONDON(2008:2010)
Returns a holiday calendar for NERC, the North American Reliability Council.
holidayNERC(year = getRmetricsOptions("currentYear"), FinCenter = "Eastern")
holidayNERC(year = getRmetricsOptions("currentYear"), FinCenter = "Eastern")
year |
an integer value or vector of years, formatted as |
FinCenter |
a character value, the name of the financial center to use. |
an object of class "timeDate"
Joe W. Byers
http://www.nerc.com/~oc/offpeaks.html
## holidayNERC holidayNERC() holidayNERC(2008:2010)
## holidayNERC holidayNERC() holidayNERC(2008:2010)
Returns a holiday (closing days) calendar for the New York Stock Exchange.
holidayNYSE(year = getRmetricsOptions("currentYear"), type = c("", "standard", "special"))
holidayNYSE(year = getRmetricsOptions("currentYear"), type = c("", "standard", "special"))
year |
an integer value or vector of years, formatted as |
type |
what to include, a character string. The default is to return all
closing days (holidays and specials). |
holidayNYSE
generates a list of the clossing days of the
exchange for the requested years.
The default is to return all closing days (holidays and
specials). type = "standard"
requests only closings associated
with the standard public holidays, type = "special"
gives the
special closings only.
an object of class "timeDate"
The list of closing days returned by holidayNYSE
was changed in
timeDate version 4021.105, in that previously it did not include
special closing days. This was perceived by some users as buggy. Also,
the intent by the authors of the package seems to have been for it to
return all closing days. Indeed, the default for isisBizday()
is to drop weekends and days returned by holidayNYSE
.
Argument type
was also included in version 4021.105. The old
behaviour can be obtained by using type = "standard"
.
The default for argument type
is currently the empty string,
since I couldn't come up with another string that would be universally
easy to remember. Suggestions are welcome but a change will be only
feasible if they come soon.
Diethelm Wuertz (original author); Yohan Chalabi improved speed and handling of time zone; Georgi N. Boshnakov added the special closings and argument ‘type’.
earlyCloseNYSE
for times of early closings
## holidayNYSE holidayNYSE() ## current year holidayNYSE(2008:2010) ## January 2, 2007 was a memorial day for president G.R. Ford, ## not a regular public holiday holidayNYSE(2007) holidayNYSE(2007, type = "standard") holidayNYSE(2007, type = "special")
## holidayNYSE holidayNYSE() ## current year holidayNYSE(2008:2010) ## January 2, 2007 was a memorial day for president G.R. Ford, ## not a regular public holiday holidayNYSE(2007) holidayNYSE(2007, type = "standard") holidayNYSE(2007, type = "special")
Returns a holiday calendar for the Toronto Stock Exchange.
holidayTSX(year = getRmetricsOptions("currentYear"))
holidayTSX(year = getRmetricsOptions("currentYear"))
year |
an integer value or vector of years, formatted as |
an object of class "timeDate"
## holidayTSX holidayTSX() holidayTSX(2008:2010)
## holidayTSX holidayTSX() holidayTSX(2008:2010)
Returns a holiday calendar for Zurich.
holidayZURICH(year = getRmetricsOptions("currentYear"))
holidayZURICH(year = getRmetricsOptions("currentYear"))
year |
an integer value or vector of years, formatted as |
The Zurich holiday calendar includes the following holidays: NewYearsDay, GoodFriday, EasterMonday, LaborDay, PentecostMonday, ChristmasDay, BoxingDay, CHBerchtoldsDay, CHSechselaeuten, CHAscension, CHConfederationDay, CHKnabenschiessen.
an object of class "timeDate"
## holidayZURICH holidayZURICH() holidayZURICH(2008:2010)
## holidayZURICH holidayZURICH() holidayZURICH(2008:2010)
is.na
methods for "timeDate"
objects.
# create a timeCalendar sequence (td <- timeCalendar()) is.na(td) # insert NA's is.na(td) <- 2:3 td # test of NA's is.na(td)
# create a timeCalendar sequence (td <- timeCalendar()) is.na(td) # insert NA's is.na(td) <- 2:3 td # test of NA's is.na(td)
Tests if a date is a business day or not.
isBizday(x, holidays = holidayNYSE(), wday = 1:5) isHoliday(x, holidays = holidayNYSE(), wday = 1:5)
isBizday(x, holidays = holidayNYSE(), wday = 1:5) isHoliday(x, holidays = holidayNYSE(), wday = 1:5)
x |
an object of class |
holidays |
holiday dates from a holiday calendar. An object of class
|
wday |
Specify which days should be considered as weekdays. By default from Mondays to Fridays. |
Returns a logical vector of the same length as x
indicating if
a date is a business day, or a holiday, respectively.
a logical vector of the same length as x
## dates in April, current year currentYear <- getRmetricsOptions("currentYear") tS <- timeSequence(from = paste(currentYear, "-03-01", sep = ""), to = paste(currentYear, "-04-30", sep = "")) tS ## subset business days at NYSE holidayNYSE() isBizday(tS, holidayNYSE()) tS[isBizday(tS, holidayNYSE())]
## dates in April, current year currentYear <- getRmetricsOptions("currentYear") tS <- timeSequence(from = paste(currentYear, "-03-01", sep = ""), to = paste(currentYear, "-04-30", sep = "")) tS ## subset business days at NYSE holidayNYSE() isBizday(tS, holidayNYSE()) tS[isBizday(tS, holidayNYSE())]
Checks if a date/time vector is regular. i.e. if it is a daily, a monthly, or a quarterly date/time vector. If the date/time vector is regular the frequency can determined calling the function frequency.
## S4 method for signature 'timeDate' isDaily(x) ## S4 method for signature 'timeDate' isMonthly(x) ## S4 method for signature 'timeDate' isQuarterly(x) ## S4 method for signature 'timeDate' isRegular(x) ## S3 method for class 'timeDate' frequency(x, ...)
## S4 method for signature 'timeDate' isDaily(x) ## S4 method for signature 'timeDate' isMonthly(x) ## S4 method for signature 'timeDate' isQuarterly(x) ## S4 method for signature 'timeDate' isRegular(x) ## S3 method for class 'timeDate' frequency(x, ...)
x |
an object of class |
... |
arguments to be passed. |
A date/time vector is defined as daily if the vector has not more than one date/time stamp per day.
A date/time vector is defined as monthly if the vector has not more than one date/time stamp per month.
A date/time vector is defined as quarterly if the vector has not more than one date/time stamp per quarter.
A monthly date/time vector is also a daily vector, a quarterly date/time vector is also a monthly vector.
A regular date/time vector is either a monthly or a quarterly vector.
NOT yet implemented is the case of weekly vectors.
The is*
functions return TRUE
or FALSE
depending
on whether the date/time vector fulfills the condition or not.
The function frequency returns in general 1, for quarterly date/time vectors 4, and for monthly vectors 12.
tC <- timeCalendar(2023) tC isRegular(tC) frequency(tC) isMonthly(tC) isQuarterly(tC) isDaily(tC)
tC <- timeCalendar(2023) tC isRegular(tC) frequency(tC) isMonthly(tC) isQuarterly(tC) isDaily(tC)
Tests if a date is a weekday or not.
isWeekday(x, wday = 1:5) isWeekend(x, wday = 1:5)
isWeekday(x, wday = 1:5) isWeekend(x, wday = 1:5)
x |
an object of class |
wday |
Specify which days should be considered as weekdays. By default from Mondays to Fridays. |
a logical vector indicating if a date is a weekday or a weekend day
## dates in april, current year currentYear = getRmetricsOptions("currentYear") tS = timeSequence( from = paste(currentYear, "-03-01", sep = ""), to = paste(currentYear, "-04-30", sep = "")) tS ## subset of weekends isWeekend(tS) tS[isWeekend(tS)]
## dates in april, current year currentYear = getRmetricsOptions("currentYear") tS = timeSequence( from = paste(currentYear, "-03-01", sep = ""), to = paste(currentYear, "-04-30", sep = "")) tS ## subset of weekends isWeekend(tS) tS[isWeekend(tS)]
Returns Julian day counts, date/time atoms from a "timeDate"
object,
and extracts month atoms from a "timeDate"
object.
## S3 method for class 'timeDate' julian(x, origin = timeDate("1970-01-01"), units = c("auto", "secs", "mins", "hours", "days", "weeks"), zone = NULL, FinCenter = NULL, ...) ## S4 method for signature 'timeDate' atoms(x, ...) ## S3 method for class 'timeDate' months(x, abbreviate = FALSE) ## S3 method for class 'timeDate' weekdays(x, abbreviate = FALSE) ## S3 method for class 'timeDate' quarters(x, abbreviate) ## S4 method for signature 'timeDate' x$name
## S3 method for class 'timeDate' julian(x, origin = timeDate("1970-01-01"), units = c("auto", "secs", "mins", "hours", "days", "weeks"), zone = NULL, FinCenter = NULL, ...) ## S4 method for signature 'timeDate' atoms(x, ...) ## S3 method for class 'timeDate' months(x, abbreviate = FALSE) ## S3 method for class 'timeDate' weekdays(x, abbreviate = FALSE) ## S3 method for class 'timeDate' quarters(x, abbreviate) ## S4 method for signature 'timeDate' x$name
x |
an object of class |
origin |
a length-one object inheriting from class |
units |
a character string denoting the date/time units in which the results are desired. |
zone |
the time zone or financial center where the data were recorded. |
FinCenter |
a character string with the location of the financial center named as "continent/city". |
abbreviate |
currently not used. |
name |
one of |
... |
arguments passed to other methods. |
Generic functions to extract properties of "timeDate"
objects. julian
and months
are generics from base R,
while atoms
is a generic defined in this package.
julian
extracts the number of days since origin
(can be
fractional), see also julian
.
atoms
extracts the calendar atoms from a "timeDate"
object, i.e., the year, month, day, and optionally, hour, minute and
second. The result is a data frame with the financial center in
atrribute "control"
.
months
extracts the months, see section ‘Note’.
The dollar operator applied to a "timeDate"
object,
e.g. td$name
, extracts a component of the date/time values as a
numeric vector. Currently, name
can be one of year
,
month
, day
, hour
, minute
, second
,
wday
(or weekday
), wday0
(or weekday0
),
and quarter
. wday0
(weekday0
) starts with 0 (for
Sunday), the meaning of the rest should be clear.
In interactive sessions, completion is available for the dollar operator.
for julian
, a difftime
object;
for atoms
, a data.frame
with attribute "control"
containing the financial center of the input vector x
. The
data frame has the following components:
Y |
year, |
m |
month, |
d |
day, |
H |
hour, |
M |
minute, |
S |
second; |
for months
, a numeric vector with attribute "control"
containing the financial center. (Note: this use is
deprecated, use $month
instead.)
for the dollar method, the corresponding component as numeric vector.
Deprecation Warning: a 'timeDate' method for 'months' has existed for a long time but it was returning a numeric vector, which is inconsistent with the other methods for months in base R (they return names of months). Returning a numeric vector when 'abbreviate' is missing is a temporary compromise, to avoid breaking old code but this should be considered deprecated. Use 'td$month' to get the numbers.
the base R functions
julian
,
difftime
,
months
;
## julian tC = timeCalendar(2022) julian(tC)[1:3] ## atoms atoms(tC) ## months months(tC) weekdays(tC) weekdays(tC, TRUE) ## the dollar method tC$year tC$month tC$day tC$hour tC$minute tC$second tC$weekday tC$weekday0 tC$quarter
## julian tC = timeCalendar(2022) julian(tC)[1:3] ## atoms atoms(tC) ## months months(tC) weekdays(tC) weekdays(tC, TRUE) ## the dollar method tC$year tC$month tC$day tC$hour tC$minute tC$second tC$weekday tC$weekday0 tC$quarter
Generic function for computation of kurtosis. The methods defined in package timeDate are described here.
kurtosis(x, ...) ## Default S3 method: kurtosis(x, na.rm = FALSE, method = c("excess", "moment", "fisher"), ...) ## S3 method for class 'data.frame' kurtosis(x, na.rm = FALSE, method = c("excess", "moment", "fisher"), ...) ## S3 method for class 'POSIXct' kurtosis(x, ...) ## S3 method for class 'POSIXlt' kurtosis(x, ...)
kurtosis(x, ...) ## Default S3 method: kurtosis(x, na.rm = FALSE, method = c("excess", "moment", "fisher"), ...) ## S3 method for class 'data.frame' kurtosis(x, na.rm = FALSE, method = c("excess", "moment", "fisher"), ...) ## S3 method for class 'POSIXct' kurtosis(x, ...) ## S3 method for class 'POSIXlt' kurtosis(x, ...)
x |
a numeric vector or object. |
na.rm |
a logical. Should missing values be removed? |
method |
a character string, the method of computation, see section ‘Details’. |
... |
arguments to be passed. |
kurtosis
is an S3 generic function. This page describes the
methods defined in package dateTime
.
Argument "method"
can be one of "moment"
,
"fisher"
, or "excess"
. If "excess"
is selected,
then the value of the kurtosis is computed by the "moment"
method and a value of 3 will be subtracted. The "moment"
method is based on the definitions of kurtosis for distributions and
this method should be used when resampling (bootstrap or
jackknife). The "fisher"
method correspond to the usual
"unbiased" definition of sample variance, although in the case of
kurtosis exact unbiasedness is not possible.
If x
is numeric the kurtosis is computed according to the
description given for argument method
. A logical vector is
treated as a vector of 1's and 0's.
The data.frame
method applies kurtosis
recursively to
each column. The POSIXlt
method computes the kurtosis of the
underlying numerical representation of the date/times. The method for
POSIXct
does the same after converting the argument to
POSIXlt
.
The default method returns NA
, with a warning, if it can't
handle argument x
.
a numeric value or vector with attribute "method"
indicating
the method.
r = rnorm(100) mean(r) var(r) ## kurtosis kurtosis(r) kurtosis(data.frame(r = r, r2 = r^2))
r = rnorm(100) mean(r) var(r) ## kurtosis kurtosis(r) kurtosis(data.frame(r = r, r2 = r^2))
Returns the length of a "timeDate"
object.
## S3 method for class 'timeDate' length(x)
## S3 method for class 'timeDate' length(x)
x |
an object of class |
an integer of length 1
## timeCalendar tC = timeCalendar() ## length - length(tC)
## timeCalendar tC = timeCalendar() ## length - length(tC)
Lists supported financial centers.
listFinCenter(pattern = ".*")
listFinCenter(pattern = ".*")
pattern |
a pattern character string as required by the |
The list returned by listFinCenter
doesn't contain all
financial centers supported by timeDate. Rather it contains
currently supported ‘standard names’ of time zones defined in
the tz (a.k.a. Zoneinfo) database. Names supported by previous
versions of by timeDate are recognised, even though they are not
in the list.
a character vector listing the financial centers whose names match
pattern
.
rulesFinCenter
for the daylight saving rules
## myFinCenter - the global setting currently used getRmetricsOptions("myFinCenter") ## Other Financial Centers listFinCenter("Asia/") listFinCenter("^A") # all beginning with "A" listFinCenter("^[^A]") # all *not* beginning with "A" listFinCenter(".*/L") # cities with L* stopifnot(identical(sort(listFinCenter()), ## 'A' and 'not A' == everything: sort(union(listFinCenter("^A"), listFinCenter("^[^A]")))))
## myFinCenter - the global setting currently used getRmetricsOptions("myFinCenter") ## Other Financial Centers listFinCenter("Asia/") listFinCenter("^A") # all beginning with "A" listFinCenter("^[^A]") # all *not* beginning with "A" listFinCenter(".*/L") # cities with L* stopifnot(identical(sort(listFinCenter()), ## 'A' and 'not A' == everything: sort(union(listFinCenter("^A"), listFinCenter("^[^A]")))))
Returns a list of holidays.
listHolidays(pattern = ".*")
listHolidays(pattern = ".*")
pattern |
a character string containing a regular expression. |
Returns a character vector containing the names of supported holidays
matching pattern
. The default is to return all holidays.
The list is sorted alphabetically. It is changed from time to time. So, the use of character indexing (possibly representing patterns) on the returned list is strongly recommended.
a character vector
## Local Swiss Holidays: listHolidays("CH") listHolidays("Easter") listHolidays("NewYear") ## All Holidays listHolidays()
## Local Swiss Holidays: listHolidays("CH") listHolidays("Easter") listHolidays("NewYear") ## All Holidays listHolidays()
Corrects "timeDate"
objects if they do not fulfill the ISO8601
midnight standard.
midnightStandard2()
relies on strptime
wherever
possible, and there simply returns
as.POSIXct(strptime(charvec, format, tz = "GMT"))
.
midnightStandard (charvec, format) midnightStandard2(charvec, format)
midnightStandard (charvec, format) midnightStandard2(charvec, format)
charvec |
a character string or vector of dates and times. |
format |
a string, the format specification of the input character vector. |
midnightStandard
returns a character
and
midnightStandard2
a POSIXct
object.
ch <- "2007-12-31 24:00" midnightStandard(ch) (ms2 <- midnightStandard2(ch)) class(ms2)
ch <- "2007-12-31 24:00" midnightStandard(ch) (ms2 <- midnightStandard2(ch)) class(ms2)
A character string with the name of my financial center.
Can be modified by the user to his/her own or any other financial
center. The default is "GMT"
. To list all supported
financial centers use the function listFinCenter
.
## myFinCenter - the global setting currently used getRmetricsOptions("myFinCenter") ## change to another financial center # setRmetricsOptions(myFinCenter = "Zurich") ## Do not care about DST # setRmetricsOptions(myFinCenter = "GMT")
## myFinCenter - the global setting currently used getRmetricsOptions("myFinCenter") ## change to another financial center # setRmetricsOptions(myFinCenter = "Zurich") ## Do not care about DST # setRmetricsOptions(myFinCenter = "GMT")
A variable with the frequency of date/units.
the date/time units, a character value, yy default "days"
## myUnits getRmetricsOptions("myUnits")
## myUnits getRmetricsOptions("myUnits")
Functions to get or set the names of a "timeDate"
object.
## S4 method for signature 'timeDate' names(x) ## S4 replacement method for signature 'timeDate' names(x) <- value
## S4 method for signature 'timeDate' names(x) ## S4 replacement method for signature 'timeDate' names(x) <- value
x |
an object of class |
value |
a character vector of up to the same length as |
td <- timeCalendar() td names(td) <- LETTERS[seq_along(td)] td
td <- timeCalendar() td names(td) <- LETTERS[seq_along(td)] td
Computes the date for the n-th or last occurrence of an n-day in year/month.
timeNthNdayInMonth(charvec, nday = 1, nth = 1, format = "%Y-%m-%d", zone = "", FinCenter = "") timeLastNdayInMonth(charvec, nday = 1, format = "%Y-%m-%d", zone = "", FinCenter = "")
timeNthNdayInMonth(charvec, nday = 1, nth = 1, format = "%Y-%m-%d", zone = "", FinCenter = "") timeLastNdayInMonth(charvec, nday = 1, format = "%Y-%m-%d", zone = "", FinCenter = "")
charvec |
a character vector of dates and times. |
nday |
an integer vector with entries ranging from |
nth |
an integer vector numbering the n-th occurence. |
format |
the format specification of the input character vector. |
zone |
the time zone or financial center where the data were recorded. |
FinCenter |
a character with the location of the financial center named as "continent/city". |
timeNthNdayInMonth
returns the nth
occurrence of a n-day
(nth = 1,...,5) in year
, month
.
timeLastNdayInMonth
returns the last nday
in
year
, month
.
an object of class "timeDate"
## timeNthNdayInMonth # What date is the second Monday in April 2004? timeNthNdayInMonth("2004-04-01", 1, 2) ## timeLastNdayInMonth # What date has the last Tuesday in May, 1996? timeLastNdayInMonth("1996-05-01", 2)
## timeNthNdayInMonth # What date is the second Monday in April 2004? timeNthNdayInMonth("2004-04-01", 1, 2) ## timeLastNdayInMonth # What date has the last Tuesday in May, 1996? timeLastNdayInMonth("1996-05-01", 2)
Compute the date that is a "on-or-after" or "on-or-before" n-day.
timeNdayOnOrAfter(charvec, nday = 1, format = "%Y-%m-%d", zone = "", FinCenter = "") timeNdayOnOrBefore(charvec, nday = 1, format = "%Y-%m-%d", zone = "", FinCenter = "")
timeNdayOnOrAfter(charvec, nday = 1, format = "%Y-%m-%d", zone = "", FinCenter = "") timeNdayOnOrBefore(charvec, nday = 1, format = "%Y-%m-%d", zone = "", FinCenter = "")
charvec |
a character vector of dates and times. |
nday |
an integer vector with entries ranging from
|
format |
the format specification of the input character vector. |
zone |
the time zone or financial center where the data were recorded. |
FinCenter |
a character with the location of the financial center named as "continent/city". |
timeNdayOnOrAfter
returns the date in the specified month that
is a n-day (e.g. Sunday) on or after the given date. Month and date
are given through argument charvec
.
The function timeNdayOnOrBefore
returns the date that is a
n-day on or before the given date.
an object of class "timeDate"
## date as character string charvec = "2006-04-16" ## timeNdayOnOrAfter # What date has the first Monday on or after March 15, 1986? timeNdayOnOrAfter("1986-03-15", 1) ## timeNdayOnOrBefore # What date has Friday on or before April 22, 1977? timeNdayOnOrBefore("1986-03-15", 5)
## date as character string charvec = "2006-04-16" ## timeNdayOnOrAfter # What date has the first Monday on or after March 15, 1986? timeNdayOnOrAfter("1986-03-15", 1) ## timeNdayOnOrBefore # What date has Friday on or before April 22, 1977? timeNdayOnOrBefore("1986-03-15", 5)
Returns start and end dates for rolling periods.
periods(x, period = "12m", by = "1m", offset = "0d") periodicallyRolling(x, period = "52w", by = "4w", offset = "0d") monthlyRolling(x, period = "12m", by = "1m")
periods(x, period = "12m", by = "1m", offset = "0d") periodicallyRolling(x, period = "52w", by = "4w", offset = "0d") monthlyRolling(x, period = "12m", by = "1m")
x |
an object of class timeDate. |
period |
a span string, consisting of a length integer and a unit value, e.g. "52w" for 52 weeks. |
by |
a span string, consisting of a length integer and a unit value, e.g. "4w" for 4 weeks. |
offset |
a span string, consisting of a length integer and a unit value, e.g. "0d" for no offset. |
Periodically Rolling - Allowed unit values are "m" for 4 weeks, "w" for weeks, "d" for days, "H" for hours, "M" for minutes, and "S" for seconds.
Monthly Calendar Rolling - The only allowed allowed unit value is "m" for monthly periods. Express a quarterly period by "3m", a semester by "6m", a year by "12m" etc.
## create time sequence x <- timeSequence(from = "2001-01-01", to = "2009-01-01", by = "day") ## generate periods periods(x, "12m", "1m") periods(x, "52w", "4w") ## roll periodically periodicallyRolling(x) ## roll monthly monthlyRolling(x)
## create time sequence x <- timeSequence(from = "2001-01-01", to = "2009-01-01", by = "day") ## generate periods periods(x, "12m", "1m") periods(x, "52w", "4w") ## roll periodically periodicallyRolling(x) ## roll monthly monthlyRolling(x)
Plot methods for "timeDate"
objects.
## S4 method for signature 'timeDate' plot(x, y, ...) ## S4 method for signature 'timeDate' lines(x, y, ...) ## S4 method for signature 'timeDate' points(x, y, ...) axis.timeDate(side, x, at, format = NULL, labels = TRUE, ...) ## S3 method for class 'timeDate' pretty(x, n=5, min.n=n%/%3, shrink.sml=0.75, high.u.bias=1.5, u5.bias=0.5+1.5*high.u.bias, eps.correct=0, ...)
## S4 method for signature 'timeDate' plot(x, y, ...) ## S4 method for signature 'timeDate' lines(x, y, ...) ## S4 method for signature 'timeDate' points(x, y, ...) axis.timeDate(side, x, at, format = NULL, labels = TRUE, ...) ## S3 method for class 'timeDate' pretty(x, n=5, min.n=n%/%3, shrink.sml=0.75, high.u.bias=1.5, u5.bias=0.5+1.5*high.u.bias, eps.correct=0, ...)
x , y , at
|
an object of class |
side |
an integer specifying which side of the plot the axis is to be drawn on. The axis is placed as follows: 1=below, 2=left, 3=above and 4=right. |
format |
a POSIX format string, e.g. "%Y-%m-%d". |
labels |
either a logical value specifying whether annotations are to be made at the tickmarks, or a vector of character strings to be placed at the tickpoints. |
n |
an integer giving the desired number of intervals. |
min.n |
a nonnegative integer giving the minimal number of intervals. |
shrink.sml |
a positive numeric by a which a default scale is shrunk in the case when range(x) is very small. |
high.u.bias |
a non-negative numeric, typically > 1. Larger high.u.bias values favor larger units. |
u5.bias |
a non-negative numeric multiplier favoring factor 5 over 2. |
eps.correct |
an integer code, one of 0, 1, or 2. If non-0, a correction is made at the boundaries. |
... |
arguments passed to other methods. |
returns a summary report of the details of a "timeDate"
object. This includes the starting and end date, the number of dates
the format and the financial center in use.
## timeCalendar x <- timeCalendar() y <- rnorm(12) ## Plotting plot(x, y, type = "l") points(x, y, pch = 19, col = "red") plot(x, y, type = "l", xaxt = "n") axis.timeDate(1, at = x[c(1, 3, 5, 7, 9, 11)], format = "%b") axis.timeDate(1, at = x[12], format = "%Y")
## timeCalendar x <- timeCalendar() y <- rnorm(12) ## Plotting plot(x, y, type = "l") points(x, y, pch = 19, col = "red") plot(x, y, type = "l", xaxt = "n") axis.timeDate(1, at = x[c(1, 3, 5, 7, 9, 11)], format = "%b") axis.timeDate(1, at = x[12], format = "%Y")
Replicates "timeDate"
objects.
## S3 method for class 'timeDate' rep(x, ...)
## S3 method for class 'timeDate' rep(x, ...)
x |
an object of class |
... |
arguments passed to the method for |
an object of class "timeDate"
## rep dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") rep(ZUR[2], times = 3) rep(ZUR[2:3], times = 2)
## rep dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") rep(ZUR[2], times = 3) rep(ZUR[2:3], times = 2)
Reverse a "timeDate"
object.
## S3 method for class 'timeDate' rev(x)
## S3 method for class 'timeDate' rev(x)
x |
an object of class |
an object of class "timeDate"
dts <- c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") ZUR <- timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR rev(ZUR)
dts <- c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") ZUR <- timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR rev(ZUR)
Allow the user to set and examine a variety of global options which affect the way in which Rmetrics functions compute and display their results.
setRmetricsOptions(...) getRmetricsOption(x, unset = "")
setRmetricsOptions(...) getRmetricsOption(x, unset = "")
unset |
a character string holding the return value is x is not set. |
x |
a character string holding an option name. |
... |
any options can be defined, using |
Rounds and truncates objects of class 'timeDate'.
## S3 method for class 'timeDate' round(x, digits = c("days", "hours", "mins")) ## S3 method for class 'timeDate' trunc(x, units = c("days", "hours", "mins"), ...)
## S3 method for class 'timeDate' round(x, digits = c("days", "hours", "mins")) ## S3 method for class 'timeDate' trunc(x, units = c("days", "hours", "mins"), ...)
digits , units
|
a character string denoting the date/time units in which the results are desired. |
x |
an object of class |
... |
arguments passed to other methods. |
The two functions round
and trunc
allow to round or to
truncate "timeDate"
objects to the specified unit and return
them as "timeDate"
objects.
There is an inconsistency in that round
uses digits
as
argument and not units
.
an object of class "timeDate"
## round ## truncate
## round ## truncate
Returns DST rules for a financial center.
rulesFinCenter(FinCenter = "")
rulesFinCenter(FinCenter = "")
FinCenter |
a character string with the location of the financial center named as "continent/city". |
The function rulesFinCenter
lists the daylight saving rules for
a selected financial center.
There is no dependency on the POSIX implementation of your operating system because timeDate comes with a database containing the necessary time zone and day light saving time information.
a list of time zones and DST rules available in the database
listFinCenter
for a list of the available financial
centers
## rulesFinCenter rulesFinCenter("Zurich")
## rulesFinCenter rulesFinCenter("Zurich")
Resamples a "timeDate"
object.
an object of class "timeDate"
## c # Create Character Vectors: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## "+/-" # Add One Day to a Given timeDate Object: GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR ## c # Concatenate and Replicate timeDate Objects: c(GMT[1:2], ZUR[1:2]) c(ZUR[1:2], GMT[1:2]) ## rep rep(ZUR[2], times = 3) rep(ZUR[2:3], times = 2)
## c # Create Character Vectors: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## "+/-" # Add One Day to a Given timeDate Object: GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR ## c # Concatenate and Replicate timeDate Objects: c(GMT[1:2], ZUR[1:2]) c(ZUR[1:2], GMT[1:2]) ## rep rep(ZUR[2], times = 3) rep(ZUR[2:3], times = 2)
Show methods for "timeDate"
objects.
Generic function.
Print function for objects of class "timeDate"
.
## print | show print(timeCalendar())
## print | show print(timeCalendar())
Functions to compute skewness.
skewness(x, ...) ## Default S3 method: skewness(x, na.rm = FALSE, method = c("moment", "fisher"), ...) ## S3 method for class 'data.frame' skewness(x, na.rm = FALSE, method = c("moment", "fisher"), ...) ## S3 method for class 'POSIXct' skewness(x, ...) ## S3 method for class 'POSIXlt' skewness(x, ...)
skewness(x, ...) ## Default S3 method: skewness(x, na.rm = FALSE, method = c("moment", "fisher"), ...) ## S3 method for class 'data.frame' skewness(x, na.rm = FALSE, method = c("moment", "fisher"), ...) ## S3 method for class 'POSIXct' skewness(x, ...) ## S3 method for class 'POSIXlt' skewness(x, ...)
x |
a numeric vector or object. |
na.rm |
a logical. Should missing values be removed? |
method |
a character string, the method of computation, see section ‘Detaials’. |
... |
arguments to be passed. |
Argument method
can be one of "moment"
or
"fisher"
. The "moment"
method is based on the
definitions of skewness for distributions and this should be used when
resampling (bootstrap or jackknife). The "fisher"
method
correspond to the usual "unbiased" definition of sample variance,
although in the case of skewness exact unbiasedness is not possible.
a numeric value or vector with attribute "method"
indicating
the method.
r = rnorm(100) mean(r) var(r) ## skewness skewness(r)
r = rnorm(100) mean(r) var(r) ## skewness skewness(r)
Sorts a "timeDate"
object.
## S3 method for class 'timeDate' sort(x, ...)
## S3 method for class 'timeDate' sort(x, ...)
x |
an object of class |
... |
arguments passed to other methods. |
an object of class "timeDate"
## c # create character vectors dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## "+/-" # add one day to a given timeDate object: GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR ## c # concatenate and replicate timeDate objects c(GMT[1:2], ZUR[1:2]) c(ZUR[1:2], GMT[1:2]) ## rep rep(ZUR[2], times = 3) rep(ZUR[2:3], times = 2)
## c # create character vectors dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## "+/-" # add one day to a given timeDate object: GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR ## c # concatenate and replicate timeDate objects c(GMT[1:2], ZUR[1:2]) c(ZUR[1:2], GMT[1:2]) ## rep rep(ZUR[2], times = 3) rep(ZUR[2:3], times = 2)
Gives dates of special one-off holidays in the UK.
specialHolidayGB(year = getRmetricsOptions("currentYear"), value = "timeDate", named = FALSE, ...)
specialHolidayGB(year = getRmetricsOptions("currentYear"), value = "timeDate", named = FALSE, ...)
year |
the year(s) for which special holidays are required, a vector
containing four-digit integer number(s) of the form |
value |
the class of the returned value. If |
named |
if |
... |
further arguments for |
specialHolidayGB
gives the special Bank holidays in England for
the years specified by argument year
, such as the Millenium day
at the end of 1999 and significant Royal events. Don't assume that
there is at most one special holiday in a given year, 2022 had two.
Years that do not contain special Bank holidays are omitted. If there
are no special holidays in the specified year(s) the results is a
"timeDate"
or "character"
object of length zero.
The holidays are sorted in increasing time order.
Argument value
controls the class of the result. The default is
"timeDate"
. The result is a character vector if value =
""
(the empty string). In the latter case, further arguments for the
transformation to character
can be passed in argument
"..."
(e.g., format
).
If argument named
is TRUE
, the dates get names
asssociated with them, so one can see which date represents which
holiday.
a "timeDate"
or a character vector, as requested by argument
value
While most of the holidays given by the functions with prefix
GBxxx
are valid for the UK as a whole and they are (or should be)
fully correct for England, there are variations in Scotland, Wales and
Northern Ireland.
Functions containing 'London' in their name refer to the London Stock Exchange. Currently, the Bank holidays given by those functions are the same as for England. Actually, the 'official' holidays between 1834 and 1870 were set by the Bank of England. The first Act of Parlament on the issue is from 1871.
Georgi N. Boshnakov
GBSummerBankHoliday
for functions giving specific
regular Bank holidays,
holidayLONDON
for all London Stock Exchange holidays
(actually, England holidays) in requested years.
## UK Millenium day specialHolidayGB(1999) # as a dateTime object specialHolidayGB(1999, "") # as a character string ## 2 special holidays in UK in 2022 specialHolidayGB(2022) # [2022-06-03] [2022-09-19] ## what are their names? specialHolidayGB(2022, named = TRUE) ## the Spring BH is usually on last Monday of May, but not in 2022 dayOfWeek(GBSpringBankHoliday(2020:2024)) ## the above formed a nice 4-day weekend in early June 2022 ## (look at the Thu-Fri sequence on 2-3 June) dayOfWeek(holidayLONDON(2022))
## UK Millenium day specialHolidayGB(1999) # as a dateTime object specialHolidayGB(1999, "") # as a character string ## 2 special holidays in UK in 2022 specialHolidayGB(2022) # [2022-06-03] [2022-09-19] ## what are their names? specialHolidayGB(2022, named = TRUE) ## the Spring BH is usually on last Monday of May, but not in 2022 dayOfWeek(GBSpringBankHoliday(2020:2024)) ## the above formed a nice 4-day weekend in early June 2022 ## (look at the Thu-Fri sequence on 2-3 June) dayOfWeek(holidayLONDON(2022))
Extracts the time when the first or last observation was taken, or
computes the range of the dates in a "timeDate"
object.
## S3 method for class 'timeDate' start(x, ...) ## S3 method for class 'timeDate' end(x, ...) ## S3 method for class 'timeDate' min(..., na.rm = FALSE) ## S3 method for class 'timeDate' max(..., na.rm = FALSE) ## S3 method for class 'timeDate' range(..., na.rm = FALSE)
## S3 method for class 'timeDate' start(x, ...) ## S3 method for class 'timeDate' end(x, ...) ## S3 method for class 'timeDate' min(..., na.rm = FALSE) ## S3 method for class 'timeDate' max(..., na.rm = FALSE) ## S3 method for class 'timeDate' range(..., na.rm = FALSE)
x |
an object of class |
... |
ignored by |
na.rm |
not used. |
Conceptually, the "timeDate"
object is sorted before the
computations. In particular, start
is not necessarilly the
first element of the object and similarly for the other functions.
min
and max
are equivalent to start
end
end
, respectively.
range
returns the earlies and the latest times in a
"timeDate"
object. The remaining functions return only one of
them, as suggested by their names.
an object of class "timeDate"
## timeCalendar # Random Calendar Dates: tR = sample(timeCalendar()) sort(tR) tR ## start | end start(tR) end(tR) ## the first and last time stamp tR[1] tR[length(tR)] rev(tR)[1] ## the range c(start(tR), end(tR)) range(tR)
## timeCalendar # Random Calendar Dates: tR = sample(timeCalendar()) sort(tR) tR ## start | end start(tR) end(tR) ## the first and last time stamp tR[1] tR[length(tR)] rev(tR)[1] ## the range c(start(tR), end(tR)) range(tR)
Extracts or replaces subsets from "timeDate"
objects.
an object of class "timeDate"
## timeCalendar tS = timeCalendar() ## [ # Subsetting Second Quarter: tS[4:6] ## [<- # Replacing:
## timeCalendar tS = timeCalendar() ## [ # Subsetting Second Quarter: tS[4:6] ## [<- # Replacing:
Summarizes details of a "timeDate"
object.
## S3 method for class 'timeDate' summary(object, ...)
## S3 method for class 'timeDate' summary(object, ...)
object |
an object of class |
... |
arguments passed to other methods. |
Creates a summary report of the details of a "timeDate"
object. This includes the starting and end date, the number of dates
the format and the financial center in use.
an object from S3 class "timeDate_summary"
, which has a print
method
tC <- timeCalendar() summary(tC)
tC <- timeCalendar() summary(tC)
Returns the system time as an object of class "timeDate"
.
Sys.timeDate(FinCenter = "")
Sys.timeDate(FinCenter = "")
FinCenter |
a character string with the location of the financial center named as "continent/city". |
a "timeDate"
object
## Not run: ## direct Sys.timeDate() ## Local Time in Zurich Sys.timeDate(FinCenter = "Zurich") ## transformed from "POSIX(c)t" with timeDate() timeDate(Sys.time()) ## Local Time in Zurich timeDate(Sys.time(), FinCenter = "Zurich") ## End(Not run)
## Not run: ## direct Sys.timeDate() ## Local Time in Zurich Sys.timeDate(FinCenter = "Zurich") ## transformed from "POSIX(c)t" with timeDate() timeDate(Sys.time()) ## Local Time in Zurich timeDate(Sys.time(), FinCenter = "Zurich") ## End(Not run)
Create a "timeDate"
object from calendar atoms.
timeCalendar(y = getRmetricsOptions("currentYear"), m = 1:12, d = 1, h = 0, min = 0, s = 0, zone = "", FinCenter = "")
timeCalendar(y = getRmetricsOptions("currentYear"), m = 1:12, d = 1, h = 0, min = 0, s = 0, zone = "", FinCenter = "")
y , m , d
|
calendar years (e.g. 1997), defaults are 1960,
calendar months (1-12), defaults are 1, and
calendar days (1-31), defaults are 1, |
h , min , s
|
hours of the days (0-23), defaults are 0, minutes of the days (0-59), defaults are 0, and seconds of the days (0-59), defaults are 0. |
zone |
a character string, denoting the time zone or financial center where the data were recorded. |
FinCenter |
a character with the location of the financial center named as "continent/city". |
an object of class "timeDate"
## timeCalendar # Current Year: getRmetricsOptions("currentYear") # 12 months of current year timeCalendar() timeCalendar(m = c(9, 1, 8, 2), d = c(28, 15, 30, 9), y = c(1989, 2001, 2004, 1990), FinCenter = "GMT") timeCalendar(m = c(9, 1, 8, 2), d = c(28, 15, 30, 9), y = c(1989, 2001, 2004, 1990), FinCenter = "Europe/Zurich") timeCalendar(h = c(9, 14), min = c(15, 23))
## timeCalendar # Current Year: getRmetricsOptions("currentYear") # 12 months of current year timeCalendar() timeCalendar(m = c(9, 1, 8, 2), d = c(28, 15, 30, 9), y = c(1989, 2001, 2004, 1990), FinCenter = "GMT") timeCalendar(m = c(9, 1, 8, 2), d = c(28, 15, 30, 9), y = c(1989, 2001, 2004, 1990), FinCenter = "Europe/Zurich") timeCalendar(h = c(9, 14), min = c(15, 23))
Create a "timeDate"
object from scratch from a character vector
or other suitable objects.
timeDate(charvec, format = NULL, zone = "", FinCenter = "", ...) ## S4 method for signature 'character' timeDate(charvec, format = NULL, zone = "", FinCenter = "", dst_gap = "+") ## methods for as.timeDate ## Default S3 method: as.timeDate(x, zone = "", FinCenter = "") ## S3 method for class 'POSIXt' as.timeDate(x, zone = "", FinCenter = "") ## S3 method for class 'Date' as.timeDate(x, zone = "", FinCenter = "") ## S3 method for class 'timeDate' as.timeDate(x, zone = x@FinCenter, FinCenter = "") strptimeDate(x, format = whichFormat(x), tz = "")
timeDate(charvec, format = NULL, zone = "", FinCenter = "", ...) ## S4 method for signature 'character' timeDate(charvec, format = NULL, zone = "", FinCenter = "", dst_gap = "+") ## methods for as.timeDate ## Default S3 method: as.timeDate(x, zone = "", FinCenter = "") ## S3 method for class 'POSIXt' as.timeDate(x, zone = "", FinCenter = "") ## S3 method for class 'Date' as.timeDate(x, zone = "", FinCenter = "") ## S3 method for class 'timeDate' as.timeDate(x, zone = x@FinCenter, FinCenter = "") strptimeDate(x, format = whichFormat(x), tz = "")
charvec |
a character string or vector of dates and times. |
format |
the format specification of the input character vector. |
zone |
the time zone or financial center where the data were recorded. |
FinCenter |
a character with the location of the financial center named as "continent/city". |
dst_gap |
a character string specifying what to do with non-existent times
falling in a DST gap: add an hour ( |
x |
for |
tz |
a character with the location of the financial center
named as |
... |
further arguments for methods. |
timeDate
creates objects from class "timeDate"
from
character vectors, objects from several date/time classes, and other
suitable objects.. It is an S4 generic function and this page
describes the methods defined in package timeDate, see section
‘Methods’.
Note that zone
is the time zone of the input, while
FinCenter
is the ‘current’ time zone, typically but not
necessarilly where the code is run. To change one or both of these
time zones of an existing "timeDate"
object, call
timeDate()
on it, see the method for charvec = "timeDate"
in section ‘Methods’.
The methods for as.timeDate
call timeDate
, maybe after
some minor preparation. The default method for as.timeDate
converts x
to character
before calling timeDate
.
strptimeDate
is a wrapper of timeDate
, suitable when
zone
and FinCenter
are the same, It has the same
arguments as strptime
. If format
is missing it
tries to deduce it. If tz
is missing it sets it to the value of
the Rmetrics option "myFinCenter"
.
an object of class "timeDate"
The following methods for timeDate
are defined in package
timeDate.
signature(charvec = "ANY")
Converts charvec
to character
and calls
timeDate
on the result.
signature(charvec = "character")
...
signature(charvec = "Date")
...
signature(charvec = "missing")
Returns the current time as "timeDate"
object.
signature(charvec = "numeric")
...
signature(charvec = "POSIXt")
...
signature(charvec = "timeDate")
Changes the time zone and/or financial center of charvec
to
the requested ones. If zone
is missing or equal to the
empty string, just changes the financial center.
as.character
,
as.POSIXct
,
etc., for conversion from "timeDate"
to other classes
## timeDate # character vector strings: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") dts; tms t1 <- timeDate(dts, format = "%Y-%m-%d", FinCenter = "GMT" ) t1 stopifnot(identical(t1, timeDate(dts, FinC = "GMT"))) # auto-format timeDate(dts, format = "%Y-%m-%d", FinCenter = "Europe/Zurich") timeDate(paste(dts, tms), format = "%Y-%m-%d %H:%M:%S", zone = "GMT", FinCenter = "GMT") timeDate(paste(dts, tms), zone = "Europe/Zurich", FinCenter = "Europe/Zurich") timeDate(paste(dts, tms), format = "%Y-%m-%d %H:%M:%S", zone = "GMT", FinCenter = "Europe/Zurich") ## non standard format: timeDate(paste(20:31, "03.2005", sep="."), format = "%d.%m.%Y") ## ISO and American formats are auto-detected: timeDate("2004-12-31", FinCenter = "GMT") timeDate("12/11/2004", FinCenter = "GMT") timeDate("1/31/2004") # auto-detect American format ## From POSIX?t, and using NAs ## lsec <- as.POSIXlt(.leap.seconds) ; lsec[c(2,4:6)] <- NA ## timeDate(lsec) ## dtms <- paste(dts,tms) ## dtms[2:3] <- NA ## timeDate(dtms, FinCenter = "Europe/Zurich") # but in GMT ## would need change in R : ## tms[3] <- dts[2] <- NA ## timeDate(paste(dts,tms), FinCenter = "Europe/Zurich") # but in GMT ## Coerce a 'Date' object into a 'timeDate' object: as.timeDate(Sys.Date())
## timeDate # character vector strings: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") dts; tms t1 <- timeDate(dts, format = "%Y-%m-%d", FinCenter = "GMT" ) t1 stopifnot(identical(t1, timeDate(dts, FinC = "GMT"))) # auto-format timeDate(dts, format = "%Y-%m-%d", FinCenter = "Europe/Zurich") timeDate(paste(dts, tms), format = "%Y-%m-%d %H:%M:%S", zone = "GMT", FinCenter = "GMT") timeDate(paste(dts, tms), zone = "Europe/Zurich", FinCenter = "Europe/Zurich") timeDate(paste(dts, tms), format = "%Y-%m-%d %H:%M:%S", zone = "GMT", FinCenter = "Europe/Zurich") ## non standard format: timeDate(paste(20:31, "03.2005", sep="."), format = "%d.%m.%Y") ## ISO and American formats are auto-detected: timeDate("2004-12-31", FinCenter = "GMT") timeDate("12/11/2004", FinCenter = "GMT") timeDate("1/31/2004") # auto-detect American format ## From POSIX?t, and using NAs ## lsec <- as.POSIXlt(.leap.seconds) ; lsec[c(2,4:6)] <- NA ## timeDate(lsec) ## dtms <- paste(dts,tms) ## dtms[2:3] <- NA ## timeDate(dtms, FinCenter = "Europe/Zurich") # but in GMT ## would need change in R : ## tms[3] <- dts[2] <- NA ## timeDate(paste(dts,tms), FinCenter = "Europe/Zurich") # but in GMT ## Coerce a 'Date' object into a 'timeDate' object: as.timeDate(Sys.Date())
Class "timeDate"
represents date and time objects.
For the management of chronological objects under R three concepts
are available: The first is the implementation of date and time in R's
chron
package neglecting locals, time zones and day light saving
times. This approach is in most cases appropriate for economic time
series. The second approach, available in R's base package implements
the POSIX standard to date and time objects, named "POSIXt"
.
Unfortunately, the representation of these objects is in some cases
operating system dependent and especially under MS Windows several
problems appeared over the time in the management of time zones and
day light saving times. Rmetrics overcomes these difficulties with
POSIX objects and introduce a new S4 class of "timeDate"
objects
which allow for powerful methods to represent dates and times in
different financial centers around the world.
Many of the basic functionalities of these objects are in common
with S-Plus' "timeDate"
objects and thus many of your privately
written functions for SPlus/FinMetrics may also be used within the
R/Rmetrics environment.
A major difference is the time zone concept which is replaced by the
"Financial Center" concept. The FinCenter
character variable
specifies where you are living and at which financial center you are
working. With the variable myFinCenter
you can overwrite the
default setting with your personal settings. With the specification
of the FinCenter
your system knows what rules rules for day
light saving times should be applied, what is your holiday calendar,
what is your currency, what are your interest rate conventions.
(Not all specifications are already implemented.) Many other
aspects can be easily accessed when a financial center is named. So we
can distinguish between Frankfurt and Zurich, which both belong to the
same time zone, but differed in DST changes in the eighties and have
different holiday calendars. Futhermore, since the underlying time
refers to "GMT" and DST rules and all other information is available
in local (ASCII) databases, we are sure, that R/Rmetrics delivers with
such a date/time concept on every computer independent of the operating
systemin use, identical results.
Another important feature of the "timeDate"
concept used here is
the fact that we don't rely on American or European ways to write dates.
We use consequently the ISO-8601 standard for date and time notations.
Generation of "timeDate"
Objects
We have defined a "timeDate"
class which is in many aspects similar
to the S-Plus class with the same name, but has also some important
advantageous differeneces. The S4 class has four Slots, the Data
slot which holds date and time as 'POSIXct' objects in the standard
ISO-8601 format, the Dim
slot which gives the dimension
of the data object (i.e. its length), the format
specification
slot and the FinCenter
slot which holds the name of the financial
center. By default this is the value
Three functions allow to cgenerate date/time objects: "timeDate"
from character vectors, timeCalendar
from date and time atoms,
and timeSequence
from a "from/to" or from a "from/length" sequence
specification. Note, time zone transformations are easily handled by
by the "timeDate"
functions which can also take "timeDate"
and POSIXt
objects as inputs, while transforming them between
financial centers and/or time zones specified by the arguments zone
and FinCenter
. Finally the function Sys.timeDate
returns
current system time in form of a "timeDate"
object.
Tests and Representation of timeDate Objects:
Rmetrics has implemented several methods to represent
"timeDate"
objects. For example, the
print method returns the date/time in square "[]"
brackets
to distinguish the output from other date and time objects.
On top of the date and
time output the name of the FinCenter
is printed. The summary
method returns a printed report with information about the
"timeDate"
object. Finally, the format methods allows to
transform objects into a ISO conform formatted character strings.
Mathematical Operations:
Rmetrics supports methods
to perform many mathematical operations. Included are methods
to extract or
to replace subsets from "timeDate"
objects,
to perform arithmetic "+"
and "-"
operations,
to group Ops
generic functions,
to return suitably lagged and iterated differences diff
,
to return differences difftimeDate
of two "timeDate"
objects, to concatenate objects, to replicate objects,
to round
objects,
to truncate objects using trunc
,
to extract the first or last entry of a vector,
to sort
the objects of the elements of a date/time vector, and
to revert "timeDate"
vector objects, among other functions.
Transformation of Objects:
Rmetrics has also functions to transform dat/time objects between
different representations. Included are methods to transform
"timeDate"
objects to character strings, to data frames,
to POSIXct or POSIXlt objects, to julian
counts. One can extract date/time atoms
from calendar
dates, and the months
atoms from a "timeDate"
object.
Objects can be created by calls of the functions
timeDate
, timeSequence
,
timeCalendar
and as.timeDate
, among
others. There is also a "timeDate"
method for
seq
.
Data
:Object of class "POSIXct"
:
a vector of POSIXct dates and times always related to
"GMT".
format
:Object of class "character"
:
a character string denoting the format specification of
the input data character vector.
FinCenter
:Object of class "character"
:
a character string with the location of the
financial center named as "continent/city", or just "city".
signature(charvec = "timeDate")
:
create objects from class "timeDate"
, see timeDate
;
signature(object = "timeDate")
:
prints an object of class "timeDate"
;
signature(x = "timeDate")
:
signature(x = "timeDate")
:
signature(x = "timeDate")
:
signature(a = "ANY", b = "ANY", h = "ANY", v ="timeDate")
:
see plot-methods
.
signature(x = "timeDate", i = "ANY", j = "missing")
:
signature(x = "timeDate", i = "character", j = "missing")
:
signature(x = "timeDate", i = "logical", j = "missing")
:
signature(x = "timeDate", i = "missing", j = "missing")
:
signature(x = "timeDate", i = "numeric", j = "missing")
:
take parts of a "timeDate"
object, see subset
.
signature(x = "timeDate")
:
signature(x = "timeDate")
:
see finCenter
.
signature(x = "timeDate")
:
signature(x = "timeDate")
:
signature(x = "timeDate")
:
see julian
.
signature(x = "timeDate")
:
see align
.
signature(x = "timeDate")
:
signature(x = "timeDate")
:
signature(x = "timeDate")
:
signature(x = "timeDate")
:
see see isRegular
.
signature(x = "timeDate")
:
see frequency
.
signature(x = "timeDate")
:
see is.na-methods
.
signature(x = "timeDate")
:
see sample
.
signature(e1 = "timeDate", e2 = "timeDate")
:
signature(e1 = "numeric", e2 = "timeDate")
:
signature(e1 = "timeDate", e2 = "numeric")
:
signature(e1 = "timeDate", e2 = "timeDate")
:
signature(e1 = "numeric", e2 = "timeDate")
:
signature(e1 = "timeDate", e2 = "numeric")
:
signature(e1 = "timeDate", e2 = "timeDate")
:
see timeDateMathOps
.
signature(from = "ANY", to = "timeDate")
:
signature(from = "Date", to = "timeDate")
:
signature(from = "POSIXt", to = "timeDate")
:
signature(from = "timeDate", to = "character")
:
signature(from = "timeDate", to = "data.frame")
:
signature(from = "timeDate", to = "Date")
:
signature(from = "timeDate", to = "list")
:
signature(from = "timeDate", to = "numeric")
:
signature(from = "timeDate", to = "POSIXct")
:
signature(from = "timeDate", to = "POSIXlt")
:
convert from/to "timeDate"
objects.
These are methods for as
, to be used with the syntax
as(from, to)
, where from
is the object to be
converted and to
is the desired target class. Most
conversions can also be done with specialised functions such as
as.character
and as.timeDate
, see
as.timeDate
.
signature(x = "timeDate")
:
signature(x = "timeDate")
:
see names-methods
.
signature(object = "timeDate")
: ...
signature(.Object = "timeDate")
: ...
Originally, these functions were written for Rmetrics users using R and Rmetrics under Microsoft's Windows XP operating system where time zones, daylight saving times and holiday calendars are not or insufficiently supported.
The usage of the Ical Library and the introduction of the FinCenter
concept was originally develloped for R Version 1.5. The
"timeDate"
and timeSeries
objects were added for
R Version 1.8.1. Minor changes were made to adapt the functions
for R Version 1.9.1. As a consequence, newer concepts like the
Date
objects were not yet considered and included in this
collection of date and time concepts. With R Version 2.3.0 a major
update has been made adding many new generic functions and renaming
a few already existing functions, please be aware of this.
Note, the date/time conversion from an arbitrary time zone to GMT cannot be unique, since date/time objects appear twice during the hour when DST changes and the isdt flag was not recorded. A bookkeeping which takes care if DST is effective or not is not yet included. However, in most applications this is not necessary since the markets are closed on weekends, especially at times when DST usually changes. It is planned for the future to implement the DST supporting this facility.
The ISO-8601 midnight standard has been implemented. Note, that for example "2005-01-01 24:00:00" is accepted as a valid date/time string.
Also available is an automated format recognition, so the user does not have to specify the format string for the most common date/time formats.
## Examples for Objects of class 'timeDate' ## timeDate ## Sys.timeDate() # direct ## timeDate(Sys.time()) # transformed from "POSIX(c)t" ## # Local Time in Zurich ## timeDate(Sys.time(), FinCenter = "Zurich") # Character Vector Strings: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms t1 <- timeDate(dts, format = "%Y-%m-%d", FinCenter = "GMT" ) t1 stopifnot(identical(t1, timeDate(dts, FinC = "GMT"))) # auto-format timeDate(dts, format = "%Y-%m-%d", FinCenter = "Europe/Zurich") timeDate(paste(dts, tms), format = "%Y-%m-%d %H:%M:%S", zone = "GMT", FinCenter = "GMT") timeDate(paste(dts, tms), zone = "Europe/Zurich", FinCenter = "Europe/Zurich") timeDate(paste(dts, tms), format = "%Y-%m-%d %H:%M:%S", zone = "GMT", FinCenter = "Europe/Zurich") ## Non Standard Format: timeDate(paste(20:31, "03.2005", sep="."), format = "%d.%m.%Y") # Note, ISO and American Formats are Auto-Detected: timeDate("2004-12-31", FinCenter = "GMT") timeDate("12/11/2004", FinCenter = "GMT") timeDate("1/31/2004") # auto-detect American format ## ... from POSIX?t, and Using NAs: ## lsec <- as.POSIXlt(.leap.seconds) ## lsec[c(2,4:6)] <- NA ## timeDate(lsec) ## dtms <- paste(dts,tms) ## dtms[2:3] <- NA ## timeDate(dtms, FinCenter = "Europe/Zurich") # but in GMT ## timeCalendar ## getRmetricsOptions("currentYear") ## timeCalendar() # 12 months of current year timeCalendar(2022) # 12 months of 2022 timeCalendar(y = c(1989, 2001, 2004, 1990), m = c(9, 1, 8, 2), d = c(28, 15, 30, 9), FinCenter = "GMT") timeCalendar(y = c(1989, 2001, 2004, 1990), m = c(9, 1, 8, 2), d = c(28, 15, 30, 9), FinCenter = "Europe/Zurich") ## timeCalendar(h = c(9, 14), min = c(15, 23)) timeCalendar(2022, h = c(9, 14), min = c(15, 23)) ## timeSequence timeSequence(from = "2004-03-12", to = "2004-04-11", format = "%Y-%m-%d", FinCenter = "GMT") timeSequence(from = "2004-03-12", to = "2004-04-11", format = "%Y-%m-%d", FinCenter = "Europe/Zurich") ## print, summary, format tC = timeCalendar(2022) tC print(tC) summary(tC) format(tC)
## Examples for Objects of class 'timeDate' ## timeDate ## Sys.timeDate() # direct ## timeDate(Sys.time()) # transformed from "POSIX(c)t" ## # Local Time in Zurich ## timeDate(Sys.time(), FinCenter = "Zurich") # Character Vector Strings: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms t1 <- timeDate(dts, format = "%Y-%m-%d", FinCenter = "GMT" ) t1 stopifnot(identical(t1, timeDate(dts, FinC = "GMT"))) # auto-format timeDate(dts, format = "%Y-%m-%d", FinCenter = "Europe/Zurich") timeDate(paste(dts, tms), format = "%Y-%m-%d %H:%M:%S", zone = "GMT", FinCenter = "GMT") timeDate(paste(dts, tms), zone = "Europe/Zurich", FinCenter = "Europe/Zurich") timeDate(paste(dts, tms), format = "%Y-%m-%d %H:%M:%S", zone = "GMT", FinCenter = "Europe/Zurich") ## Non Standard Format: timeDate(paste(20:31, "03.2005", sep="."), format = "%d.%m.%Y") # Note, ISO and American Formats are Auto-Detected: timeDate("2004-12-31", FinCenter = "GMT") timeDate("12/11/2004", FinCenter = "GMT") timeDate("1/31/2004") # auto-detect American format ## ... from POSIX?t, and Using NAs: ## lsec <- as.POSIXlt(.leap.seconds) ## lsec[c(2,4:6)] <- NA ## timeDate(lsec) ## dtms <- paste(dts,tms) ## dtms[2:3] <- NA ## timeDate(dtms, FinCenter = "Europe/Zurich") # but in GMT ## timeCalendar ## getRmetricsOptions("currentYear") ## timeCalendar() # 12 months of current year timeCalendar(2022) # 12 months of 2022 timeCalendar(y = c(1989, 2001, 2004, 1990), m = c(9, 1, 8, 2), d = c(28, 15, 30, 9), FinCenter = "GMT") timeCalendar(y = c(1989, 2001, 2004, 1990), m = c(9, 1, 8, 2), d = c(28, 15, 30, 9), FinCenter = "Europe/Zurich") ## timeCalendar(h = c(9, 14), min = c(15, 23)) timeCalendar(2022, h = c(9, 14), min = c(15, 23)) ## timeSequence timeSequence(from = "2004-03-12", to = "2004-04-11", format = "%Y-%m-%d", FinCenter = "GMT") timeSequence(from = "2004-03-12", to = "2004-04-11", format = "%Y-%m-%d", FinCenter = "Europe/Zurich") ## print, summary, format tC = timeCalendar(2022) tC print(tC) summary(tC) format(tC)
Functions for mathematical and logical operations on "timeDate"
objects.
## S4 method for signature 'timeDate,timeDate' Ops(e1, e2)
## S4 method for signature 'timeDate,timeDate' Ops(e1, e2)
e1 , e2
|
objects of class |
Group "Ops"
represents the binary mathematical operators.
Methods are defined for such operations when one or both arguments are
from class "timeDate"
.
Operations that don't make sense, such as addition of two
"timeDate"
objects, throw error.
The plus operator "+"
performs arithmetic "+" operation on
"timeDate"
objects,
and the minus operator "-"
returns a
difftime
object if both arguments e1
and e2
are "timeDate"
objects, or returns a "timeDate"
object
e2
seconds earlier than e1
.
addition of numeric to "timeDate"
returns "timeDate"
,
subtraction of numeric from "timeDate"
returns "timeDate"
,
subtraction of two "timeDate"
objects returns "difftime"
,
other operations between two "timeDate"
objects are applied to
the underlying times (slot "Date"
). The result of that
operation is converted to "timeDate"
if it represents a time
and returned as is otherwise.
## create character vectors dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## "+/-" # add one day to a given timeDate object GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR GMT + 24*3600 ZUR[2] - ZUR[1]
## create character vectors dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## "+/-" # add one day to a given timeDate object GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR GMT + 24*3600 ZUR[2] - ZUR[1]
Create a regularly spaced object of class "timeDate"
.
timeSequence(from, to = Sys.timeDate(), by, length.out = NULL, format = NULL, zone = "", FinCenter = "") ## S3 method for class 'timeDate' seq(from, to, by, length.out = NULL, along.with = NULL, ...)
timeSequence(from, to = Sys.timeDate(), by, length.out = NULL, format = NULL, zone = "", FinCenter = "") ## S3 method for class 'timeDate' seq(from, to, by, length.out = NULL, along.with = NULL, ...)
from , to
|
starting date, required, and end date, optional. If supplied,
|
by |
|
length.out |
integer, optional. Desired length of the sequence, if specified "to" will be ignored. |
along.with |
Take the length from the length of this argument. |
format |
the format specification of the input character vector. |
zone |
the time zone or financial center where the data were recorded. |
FinCenter |
a character with the location of the financial center named as "continent/city". |
... |
arguments passed to other methods. |
an object of class "timeDate"
timeSequence()
is a wrapper for the "timeDate"
method of
seq()
, and that has been closely modeled after base R's
POSIXt
method, seq.POSIXt
.
## timeSequence ## autodetection of format (t1 <- timeSequence(from = "2004-03-12", to = "2004-04-11")) stopifnot( ## different formats even: identical(t1, timeSequence(from = "2004-03-12", to = "11-Apr-2004")), identical(t1, ## explicit format and FinCenter : timeSequence(from = "2004-03-12", to = "2004-04-11", format = "%Y-%m-%d", FinCenter = "GMT"))) ## observe "switch to summer time": timeSequence(from = "2004-03-26 05:00:00", to = "2004-04-02 05:00:00", zone = "Europe/Zurich", FinCenter = "Europe/Zurich") ## ensure fixed clock time: timeSequence(from = "2004-03-26 05:00:00", to = "2004-04-01 05:00:00", by = "DSTday", zone = "Europe/Zurich", FinCenter = "Europe/Zurich") ## on the day of DST change the time may not exist (notice 2004-03-28 00:00:00): timeSequence(from = "2004-03-26 01:00:00", to = "2004-04-01 01:00:00", by = "DSTday", zone = "Europe/Zurich", FinCenter = "Europe/Zurich")
## timeSequence ## autodetection of format (t1 <- timeSequence(from = "2004-03-12", to = "2004-04-11")) stopifnot( ## different formats even: identical(t1, timeSequence(from = "2004-03-12", to = "11-Apr-2004")), identical(t1, ## explicit format and FinCenter : timeSequence(from = "2004-03-12", to = "2004-04-11", format = "%Y-%m-%d", FinCenter = "GMT"))) ## observe "switch to summer time": timeSequence(from = "2004-03-26 05:00:00", to = "2004-04-02 05:00:00", zone = "Europe/Zurich", FinCenter = "Europe/Zurich") ## ensure fixed clock time: timeSequence(from = "2004-03-26 05:00:00", to = "2004-04-01 05:00:00", by = "DSTday", zone = "Europe/Zurich", FinCenter = "Europe/Zurich") ## on the day of DST change the time may not exist (notice 2004-03-28 00:00:00): timeSequence(from = "2004-03-26 01:00:00", to = "2004-04-01 01:00:00", by = "DSTday", zone = "Europe/Zurich", FinCenter = "Europe/Zurich")
Remove duplicated dates from "timeDate"
objects.
## S3 method for class 'timeDate' unique(x, ...)
## S3 method for class 'timeDate' unique(x, ...)
x |
an object of class |
... |
arguments passed to other methods. |
an object of class "timeDate"
## c # Create Character Vectors: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## "+/-" # add one day to a given timeDate object GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR ## c # Concatenate and Replicate timeDate Objects: c(GMT[1:2], ZUR[1:2]) c(ZUR[1:2], GMT[1:2]) ## rep rep(ZUR[2], times = 3) rep(ZUR[2:3], times = 2)
## c # Create Character Vectors: dts = c("1989-09-28", "2001-01-15", "2004-08-30", "1990-02-09") dts tms = c( "23:12:55", "10:34:02", "08:30:00", "11:18:23") tms ## "+/-" # add one day to a given timeDate object GMT = timeDate(dts, zone = "GMT", FinCenter = "GMT") GMT ZUR = timeDate(dts, zone = "GMT", FinCenter = "Europe/Zurich") ZUR ## c # Concatenate and Replicate timeDate Objects: c(GMT[1:2], ZUR[1:2]) c(ZUR[1:2], GMT[1:2]) ## rep rep(ZUR[2], times = 3) rep(ZUR[2:3], times = 2)
Tries to recognize the date/time format.
whichFormat(charvec, silent = FALSE)
whichFormat(charvec, silent = FALSE)
charvec |
a character string or vector of dates and times. |
silent |
a logical flag. Should a warning be printed if the format cannot be recognized? |
a format string
## midnightStandard whichFormat("2007-12-31 24:00")
## midnightStandard whichFormat("2007-12-31 24:00")
Extract the subset of a "timeDate"
object observed between two
time stamps.
## S3 method for class 'timeDate' window(x, start , end, ...) ## S3 method for class 'timeDate' cut(x, from , to, ...)
## S3 method for class 'timeDate' window(x, start , end, ...) ## S3 method for class 'timeDate' cut(x, from , to, ...)
x |
an object of class |
start , end
|
starting date, required, and end date, optional. If supplied
|
from , to
|
starting date, required, and end date, optional. If supplied
|
... |
arguments passed to other methods. |
an object of class "timeDate"
The method for cut
has been discouraged in the sources for a
long time (with a recommendation to use window
). It was
officially deprecated in v4032.109 and will be removed or replaced by
a method that is consistent with the methods for cut
in base R,
## timeCalendar # monthly dates in current year tS = timeCalendar() tS ## window # 2nd quarter window: tS[4:6] window(tS, tS[4], tS[6])
## timeCalendar # monthly dates in current year tS = timeCalendar() tS ## window # 2nd quarter window: tS[4:6] window(tS, tS[4], tS[6])