Start here. This is the direct spoken answer to practice first.
Overview
The correct type depends on whether the value is a point on the timeline, a local calendar value, or a schedule governed by time-zone rules.
I use Instant for a specific point on the UTC timeline, such as when an order was created. LocalDateTime contains calendar fields but no offset or time zone, so by itself it cannot identify one moment; it fits values whose meaning is intentionally local. ZonedDateTime combines local date and time with a ZoneId, so it fits rules such as a meeting at 09:00 in Europe/Skopje. I choose the type from the business meaning rather than converting every value to the same class.