LocalDateTime knows the date and the wall-clock time, but it has no idea where on Earth that wall is. The moment a real e-commerce app sends a confirmation email to a customer in Mumbai while the server runs in Virginia, you need a type that carries a time zone with it. ZonedDateTime is that type. It combines a LocalDateTime, a ZoneId like Asia/Kolkata, and the ZoneOffset that applies at that instant, and it knows how to translate between zones without breaking on daylight saving boundaries.