Casting is one way to change a time point's precision.
Casting to a less precise precision will completely drop information that
is more precise than the precision that you are casting to. It does so
in a way that makes it round towards zero. When converting time points
to a less precise precision, you often want
time_point_cast(), as that handles pre-1970 dates (which are
stored as negative durations) in a more intuitive manner.
Casting to a more precise precision is done through a multiplication by a conversion factor between the current precision and the new precision.
A sys-time or naive-time.
A time point precision. One of:
x cast to the new
# Hour precision time points # One is pre-1970, one is post-1970 x <- duration_hours(c(25, -25)) x <- as_naive_time(x) x#> <time_point<naive><hour>> #>  "1970-01-02 01" "1969-12-30 23"# Casting rounds the underlying duration towards 0 cast <- time_point_cast(x, "day") cast#> <time_point<naive><day>> #>  "1970-01-02" "1969-12-31"# Flooring rounds the underlying duration towards negative infinity, # which is often more intuitive for time points. # Note that the cast ends up rounding the pre-1970 date up to the next # day, while the post-1970 date is rounded down. floor <- time_point_floor(x, "day") floor#> <time_point<naive><day>> #>  "1970-01-02" "1969-12-30"# Casting to a more precise precision, hour->millisecond time_point_cast(x, "millisecond")#> <time_point<naive><millisecond>> #>  "1970-01-02 01:00:00.000" "1969-12-30 23:00:00.000"