Business dates calculations

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
library(busdater)

Introduction to busdater

Working with business dates can be cumbersome and error prone. busdater aims to make it easier, by providing functionality, to get financial year, calendar year and month calculations. It returns start and end of the business periods.

Jurisdictions and organisations observe different start and end of financial year. parameter is string in the format of "MM-DD" representing the start of financial year, e.g. "01-01" for 1st of January or "07-01" for 1st of July. The default is taken from options and is "07-01" if not present.

This package caters for financial years that have a fixed start date. It does not cater for moving dates e.g. last Friday of September.

The package has 4 functions (2 deprecated):

Enjoy!

Examples and explanations

get_fy function

Given the current date:

Sys.Date()
getOption("busdaterFYstart", default = "07-01")

Return the current financial year as integer

get_fy()

Return financial year for given dates

dt <- as.Date(c("01-01-2018", "15-12-2017"), "%d-%m-%Y")
get_fy(date = dt[1])
get_fy(date = dt)

Return the next financial year as integer

get_fy(offset_period = 1) # current financial year + 1
get_fy(date = dt[1], offset_period = 1)
get_fy(date = dt, offset_period = 1)

Return the previous financial year as integer

get_fy(offset_period=-1) ## return the previous financial year as integer
get_fy(date = dt[1], offset_period = -1)
get_fy(date = dt, offset_period = -1)

get_boundary function

Given the current date:

Sys.Date()
getOption("busdaterFYstart", default = "07-01")

What is the 1st day of the current financial year

get_boundary()
get_boundary(opt_fy_start = "07-01")
get_boundary(opt_fy_start = "01-03")

The last day of the current financial year

get_boundary(boundary = "last day")

The last day of the last calendar year

get_boundary(offset_period = -1, bus_period = "CY", boundary = "last day")

The last day of month 14 months from now

get_boundary(offset_period = 14, offset_type = "month",
                  bus_period = "M", boundary = "last day")

The first day of financial years for dates 3 months before the given dates

get_boundary(as.Date(c("02/27/1992", "09/28/2022"), "%m/%d/%Y"),
                  offset_period = -3, offset_type = "month",
                  bus_period = "FY", boundary = "1st day")


Try the busdater package in your browser

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

busdater documentation built on May 2, 2019, 6:39 a.m.