Short answer
LocalDateTime has no timezone or offset, so it's ambiguous on the absolute timeline — store an event with it and you can't tell what real instant it happened across servers in different zones, and DST transitions make some local times nonexistent or doubled.
Explanation
For an actual moment in time use Instant (or store epoch millis/timestamptz), and only use LocalDate/LocalDateTime for genuinely zoneless concepts like a birthday or a store's opening time. Mixing these up causes off-by-hours bugs that only appear around DST boundaries or for users in other regions.
Common mistakes
- Storing event timestamps as LocalDateTime without a zone.
- Converting between time zones manually instead of using ZonedDateTime or Instant.