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_floor()
instead
of time_point_cast()
, as that handles pre1970 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.
time_point_cast(x, precision)
x 
A systime or naivetime. 

precision 
A time point precision. One of:

x
cast to the new precision
.
# Hour precision time points # One is pre1970, one is post1970 x < duration_hours(c(25, 25)) x < as_naive_time(x) x#> <time_point<naive><hour>[2]> #> [1] "19700102 01" "19691230 23"# Casting rounds the underlying duration towards 0 cast < time_point_cast(x, "day") cast#> <time_point<naive><day>[2]> #> [1] "19700102" "19691231"# Flooring rounds the underlying duration towards negative infinity, # which is often more intuitive for time points. # Note that the cast ends up rounding the pre1970 date up to the next # day, while the post1970 date is rounded down. floor < time_point_floor(x, "day") floor#> <time_point<naive><day>[2]> #> [1] "19700102" "19691230"# Casting to a more precise precision, hour>millisecond time_point_cast(x, "millisecond")#> <time_point<naive><millisecond>[2]> #> [1] "19700102 01:00:00.000" "19691230 23:00:00.000"