Examples for 'lubridate::round_date'


Round, floor and ceiling methods for date-time objects

Aliases: round_date floor_date ceiling_date

Keywords: chron manip

### ** Examples


## print fractional seconds
options(digits.secs=6)

x <- ymd_hms("2009-08-03 12:01:59.23")
round_date(x, ".5s")
[1] "2009-08-03 12:01:59 UTC"
round_date(x, "sec")
[1] "2009-08-03 12:01:59 UTC"
round_date(x, "second")
[1] "2009-08-03 12:01:59 UTC"
round_date(x, "minute")
[1] "2009-08-03 12:02:00 UTC"
round_date(x, "5 mins")
[1] "2009-08-03 12:00:00 UTC"
round_date(x, "hour")
[1] "2009-08-03 12:00:00 UTC"
round_date(x, "2 hours")
[1] "2009-08-03 12:00:00 UTC"
round_date(x, "day")
[1] "2009-08-04 UTC"
round_date(x, "week")
[1] "2009-08-02 UTC"
round_date(x, "month")
[1] "2009-08-01 UTC"
round_date(x, "bimonth")
[1] "2009-09-01 UTC"
round_date(x, "quarter") == round_date(x, "3 months")
[1] TRUE
round_date(x, "halfyear")
[1] "2009-07-01 UTC"
round_date(x, "year")
[1] "2010-01-01 UTC"
x <- ymd_hms("2009-08-03 12:01:59.23")
floor_date(x, ".1s")
[1] "2009-08-03 12:01:59.2 UTC"
floor_date(x, "second")
[1] "2009-08-03 12:01:59 UTC"
floor_date(x, "minute")
[1] "2009-08-03 12:01:00 UTC"
floor_date(x, "hour")
[1] "2009-08-03 12:00:00 UTC"
floor_date(x, "day")
[1] "2009-08-03 UTC"
floor_date(x, "week")
[1] "2009-08-02 UTC"
floor_date(x, "month")
[1] "2009-08-01 UTC"
floor_date(x, "bimonth")
[1] "2009-07-01 UTC"
floor_date(x, "quarter")
[1] "2009-07-01 UTC"
floor_date(x, "season")
[1] "2009-06-01 UTC"
floor_date(x, "halfyear")
[1] "2009-07-01 UTC"
floor_date(x, "year")
[1] "2009-01-01 UTC"
x <- ymd_hms("2009-08-03 12:01:59.23")
ceiling_date(x, ".1 sec") # imprecise representation at 0.1 sec !!!
[1] "2009-08-03 12:01:59.2 UTC"
ceiling_date(x, "second")
[1] "2009-08-03 12:02:00 UTC"
ceiling_date(x, "minute")
[1] "2009-08-03 12:02:00 UTC"
ceiling_date(x, "5 mins")
[1] "2009-08-03 12:05:00 UTC"
ceiling_date(x, "hour")
[1] "2009-08-03 13:00:00 UTC"
ceiling_date(x, "day")
[1] "2009-08-04 UTC"
ceiling_date(x, "week")
[1] "2009-08-09 UTC"
ceiling_date(x, "month")
[1] "2009-09-01 UTC"
ceiling_date(x, "bimonth") == ceiling_date(x, "2 months")
[1] TRUE
ceiling_date(x, "quarter")
[1] "2009-10-01 UTC"
ceiling_date(x, "season")
[1] "2009-09-01 UTC"
ceiling_date(x, "halfyear")
[1] "2010-01-01 UTC"
ceiling_date(x, "year")
[1] "2010-01-01 UTC"
## As of R 3.4.2 POSIXct printing of fractional numbers is wrong
as.POSIXct("2009-08-03 12:01:59.3") ## -> "2009-08-03 12:01:59.2 CEST"
[1] "2009-08-03 12:01:59.2 UTC"
ceiling_date(x, ".1 sec") ## -> "2009-08-03 12:01:59.2 CEST"
[1] "2009-08-03 12:01:59.2 UTC"
## behaviour of `change_on_boundary`
## As per default behaviour `NULL`, instants on the boundary remain the
## same but dates are rounded up
ceiling_date(ymd_hms("2000-01-01 00:00:00"), "month")
[1] "2000-01-01 UTC"
ceiling_date(ymd("2000-01-01"), "month")
[1] "2000-02-01"
## If `TRUE`, both instants and dates on the boundary are rounded up
ceiling_date(ymd_hms("2000-01-01 00:00:00"), "month", change_on_boundary = TRUE)
[1] "2000-02-01 UTC"
ceiling_date(ymd("2000-01-01"), "month")
[1] "2000-02-01"
## If `FALSE`, both instants and dates on the boundary remain the same
ceiling_date(ymd_hms("2000-01-01 00:00:00"), "month", change_on_boundary = FALSE)
[1] "2000-01-01 UTC"
ceiling_date(ymd("2000-01-01"), "month")
[1] "2000-02-01"
 x <- ymd_hms("2000-01-01 00:00:00")
 ceiling_date(x, "month")
[1] "2000-01-01 UTC"
 ceiling_date(x, "month", change_on_boundary = TRUE)
[1] "2000-02-01 UTC"
 ## For Date objects first day of the month is not on the
 ## "boundary". change_on_boundary applies to instants only.
 x <- ymd("2000-01-01")
 ceiling_date(x, "month")
[1] "2000-02-01"
 ceiling_date(x, "month", change_on_boundary = TRUE)
[1] "2000-02-01"

[Package lubridate version 1.8.0 Index]