View source: R/shorter_interval.R
| shorter_interval | R Documentation |
These functions will be removed on the next mctq version. You can still
find them in the lubritime
package.
shorter_interval() returns the shorter interval between two
hms or POSIXt object hours.
longer_interval() do the inverse of shorter_interval(), i.e., returns the
longer interval between two hours.
shorter_duration() and longer_duration() return the interval time span
of shorter_interval() and longer_interval() as
Duration objects.
shorter_interval(x, y) longer_interval(x, y) shorter_duration(x, y) longer_duration(x, y)
x, y |
An |
Given two hours, x and y, in a two-day timeline, without date references,
there will be always two possible intervals between them, as illustrated
below.
To figure out what interval is the shorter or the longer,
shorter_interval() and longer_interval() verify two scenarios: 1. When
x comes before y; and 2. when x comes after y. This only works if x
value is smaller than y, therefore, the function will make sure to swap x
and y values if the latter assumption is not true.
Because shorter_interval() objective is to find the shorter interval, if
x and y are equal, the shorter interval will have a length of 0 hours,
resulting in an interval from x to x. But, if longer_interval() is used
instead, the latter condition will return a interval with 24 hours of length
(from x to x + 1 day).
In cases when x and y distance themselves by 12 hours, there will be no
shorter or longer interval (they will have equal length). In these cases,
shorter_interval() and longer_interval() will return the same value
(an interval of 12 hours).
day 1 day 2
x y x y
06:00 22:00 06:00 22:00
-----|------------------|---------|------------------|----->
16h 8h 16h
longer int. shorter int. longer int.
day 1 day 2
y x y x
13:00 08:00 13:00 08:00
-----|-------------------|-------|-------------------|----->
19h 5h 19h
longer int. shorter int. longer int.
x,y x,y x,y x,y
x y x y
10:00 10:00 10:00 10:00
-----|---------------|---------------|---------------|----->
0h 0h 0h 0h
24h 24h 24h
day 1 day 2
y x y x
12:00 00:00 12:00 00:00
-----|---------------|---------------|---------------|----->
12h 12h 12h
The mctq package works with a set of object classes specially created to
hold time values. These classes can be found in the hms
and lubridate package.
shorter_interval() and longer_interval() use the
Unix epoch (1970-01-01) date as
the start date for creating intervals.
The output will always have "UTC" set as timezone. Learn more about
time zones in ?timezone.
POSIXt objectsPOSIXt objects passed as argument to x or y
will be stripped of their dates. Only the time will be considered.
Both POSIXct and POSIXlt are
objects that inherits the class POSIXt. Learn more
about it in ?DateTimeClasses.
NA valuesshorter_interval() or longer_interval() will return an
Interval NA-NA if x or y are NA.
shorter_duration() or longer_duration() will return a
Duration NA if x or y are NA.
For shorter_interval() or longer_interval(), an
Interval object with the shorter or longer
interval between x and y.
For shorter_duration() or longer_duration(), a
Duration object with the shorter or longer
duration between x and y.
## Scalar example
x <- hms::parse_hm("23:00")
y <- hms::parse_hm("01:00")
shorter_interval(x, y)
#> [1] 1970-01-01 23:00:00 UTC--1970-01-02 01:00:00 UTC # Expected
shorter_duration(x, y)
#> [1] "7200s (~2 hours)" # Expected
longer_interval(x, y)
#> [1] 1970-01-01 01:00:00 UTC--1970-01-01 23:00:00 UTC # Expected
longer_duration(x, y)
#> [1] "79200s (~22 hours)" # Expected
x <- lubridate::as_datetime("1985-01-15 12:00:00")
y <- lubridate::as_datetime("2020-09-10 12:00:00")
shorter_interval(x, y)
#> [1] 1970-01-01 12:00:00 UTC--1970-01-01 12:00:00 UTC # Expected
shorter_duration(x, y)
#> [1] "0s" # Expected
longer_interval(x, y)
#> [1] 1970-01-01 12:00:00 UTC--1970-01-02 12:00:00 UTC # Expected
longer_duration(x, y)
#> [1] "86400s (~1 days)" # Expected
## Vector example
x <- c(hms::parse_hm("15:30"), hms::parse_hm("21:30"))
y <- c(hms::parse_hm("19:30"), hms::parse_hm("04:00"))
shorter_interval(x, y)
#> [1] 1970-01-01 15:30:00 UTC--1970-01-01 19:30:00 UTC # Expected
#> [2] 1970-01-01 21:30:00 UTC--1970-01-02 04:00:00 UTC # Expected
shorter_duration(x, y)
#> [1] [1] "14400s (~4 hours)" "23400s (~6.5 hours)" # Expected
longer_interval(x, y)
#> [1] 1970-01-01 19:30:00 UTC--1970-01-02 15:30:00 UTC # Expected
#> [2] 1970-01-01 04:00:00 UTC--1970-01-01 21:30:00 UTC # Expected
longer_duration(x, y)
#> [1] "72000s (~20 hours)" "63000s (~17.5 hours)" # Expected
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.