diff --git a/pkgdown.yml b/pkgdown.yml index 50f3019..3f620d0 100644 --- a/pkgdown.yml +++ b/pkgdown.yml @@ -2,7 +2,7 @@ pandoc: 2.19.2 pkgdown: 2.0.7 pkgdown_sha: ~ articles: {} -last_built: 2023-05-03T00:43Z +last_built: 2023-07-27T07:01Z urls: reference: https://giperbio.github.io/lubritime/reference article: https://giperbio.github.io/lubritime/articles diff --git a/reference/assign_date.html b/reference/assign_date.html index 76e8e6b..af8eda6 100644 --- a/reference/assign_date.html +++ b/reference/assign_date.html @@ -144,7 +144,7 @@
NA
valuesSee also
Other circular time functions:
cycle_time()
,
-shorter_interval()
shorter_int()
Other circular time functions:
assign_date()
,
-shorter_interval()
shorter_int()
Cycle time objects
shorter_interval()
longer_interval()
shorter_duration()
longer_duration()
shorter_int()
longer_int()
shorter_duration()
longer_duration()
Find the shorter or longer interval between two hours
R/shorter_interval.R
+ shorter_int.Rd
shorter_int()
returns the shorter interval between two
+hms
or POSIXt
object hours.
longer_int()
do the inverse of shorter_int()
, i.e., returns the
+longer interval between two hours.
shorter_duration()
and longer_duration()
return the interval time span
+of shorter_int()
and longer_int()
as
+Duration
objects.
shorter_int(x, y)
+
+longer_int(x, y)
+
+shorter_duration(x, y)
+
+longer_duration(x, y)
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_int()
and longer_int()
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_int()
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_int()
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_int()
and longer_int()
will return the same value
+(an interval of 12 hours).
1 day 2
+ day
+ x y x y06:00 22:00 06:00 22:00
+ -----|------------------|---------|------------------|----->
+
+ 16h 8h 16h
+ longer int. shorter int. longer int.
+1 day 2
+ day
+ y x y x13: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 y10:00 10:00 10:00 10:00
+ -----|---------------|---------------|---------------|----->
+
+ 0h 0h 0h 0h
+ 24h 24h 24h
+1 day 2
+ day
+ y x y x12:00 00:00 12:00 00:00
+ -----|---------------|---------------|---------------|----->
+ 12h 12h 12h
shorter_int()
and longer_int()
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
.
Other circular time functions:
+assign_date()
,
+cycle_time()
## Scalar example
+
+x <- hms::parse_hm("23:00")
+y <- hms::parse_hm("01:00")
+
+shorter_int(x, y)
+#> [1] 1970-01-01 23:00:00 UTC--1970-01-02 01:00:00 UTC
+#> [1] 1970-01-01 23:00:00 UTC--1970-01-02 01:00:00 UTC # Expected
+shorter_duration(x, y)
+#> [1] "7200s (~2 hours)"
+#> [1] "7200s (~2 hours)" # Expected
+longer_int(x, y)
+#> [1] 1970-01-01 01:00:00 UTC--1970-01-01 23:00:00 UTC
+#> [1] 1970-01-01 01:00:00 UTC--1970-01-01 23:00:00 UTC # Expected
+longer_duration(x, y)
+#> [1] "79200s (~22 hours)"
+#> [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_int(x, y)
+#> [1] 1970-01-01 12:00:00 UTC--1970-01-01 12:00:00 UTC
+#> [1] 1970-01-01 12:00:00 UTC--1970-01-01 12:00:00 UTC # Expected
+shorter_duration(x, y)
+#> [1] "0s"
+#> [1] "0s" # Expected
+longer_int(x, y)
+#> [1] 1970-01-01 12:00:00 UTC--1970-01-02 12:00:00 UTC
+#> [1] 1970-01-01 12:00:00 UTC--1970-01-02 12:00:00 UTC # Expected
+longer_duration(x, y)
+#> [1] "86400s (~1 days)"
+#> [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_int(x, y)
+#> [1] 1970-01-01 15:30:00 UTC--1970-01-01 19:30:00 UTC
+#> [2] 1970-01-01 21:30:00 UTC--1970-01-02 04:00:00 UTC
+#> [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] "14400s (~4 hours)" "23400s (~6.5 hours)"
+#> [1] [1] "14400s (~4 hours)" "23400s (~6.5 hours)" # Expected
+longer_int(x, y)
+#> [1] 1970-01-01 19:30:00 UTC--1970-01-02 15:30:00 UTC
+#> [2] 1970-01-01 04:00:00 UTC--1970-01-01 21:30:00 UTC
+#> [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)"
+#> [1] "72000s (~20 hours)" "63000s (~17.5 hours)" # Expected
+