ChronoLocalDateTime<D extends ChronoLocalDate>
is a generic interface in the java.time.chrono
package that represents a date-time object without a time-zone, intended to support non-ISO calendar systems.
It is used for handling calendar systems like Hijrah, Japanese, Minguo, and Thai Buddhist, enabling globalized applications beyond the ISO calendar.
Common used Methods

Simple Program Using ChronoLocalDateTime (Japanese Calendar)
import java.time.LocalTime; import java.time.chrono.JapaneseChronology; import java.time.chrono.ChronoLocalDateTime; import java.time.chrono.ChronoLocalDate; public class SimpleChronoLocalDateTimeExample { public static void main(String[] args) { ChronoLocalDate date = JapaneseChronology.INSTANCE.dateNow(); ChronoLocalDateTime<?> chronoDateTime = date.atTime(LocalTime.now()); System.out.println("Chronology: " + chronoDateTime.getChronology()); System.out.println("Date: " + chronoDateTime.toLocalDate()); System.out.println("Time: " + chronoDateTime.toLocalTime()); } }
Problem Statement
LotusJavaPrince and Mahesh are working on a global banking portal where clients from Japan and the Middle East need to view date and time in localized calendars.
They use ChronoLocalDateTime
to support multi-calendar compatibility, such as Japanese and Hijrah (Islamic) calendars, and allow users to view operations in their native system.
import java.time.LocalTime; import java.time.ZoneId; import java.time.ZoneOffset; import java.time.chrono.ChronoLocalDate; import java.time.chrono.ChronoLocalDateTime; import java.time.chrono.HijrahChronology; import java.time.chrono.JapaneseChronology; public class ChronoDateTimeCaseStudy { public static void main(String[] args) { System.out.println("LotusJavaPrince and Mahesh - Global Calendar Display"); // Japanese Chronology ChronoLocalDate japaneseDate = JapaneseChronology.INSTANCE.dateNow(); ChronoLocalDateTime<?> japaneseDateTime = japaneseDate.atTime(LocalTime.now()); // Hijrah Chronology ChronoLocalDate hijrahDate = HijrahChronology.INSTANCE.dateNow(); ChronoLocalDateTime<?> hijrahDateTime = hijrahDate.atTime(LocalTime.now()); // Display information System.out.println("\n--- Japanese Calendar ---"); System.out.println("Chronology: " + japaneseDateTime.getChronology()); System.out.println("DateTime: " + japaneseDateTime); System.out.println("Instant (UTC): " + japaneseDateTime.toInstant(ZoneOffset.UTC)); System.out.println("\n--- Hijrah Calendar ---"); System.out.println("Chronology: " + hijrahDateTime.getChronology()); System.out.println("DateTime: " + hijrahDateTime); System.out.println("Instant (UTC): " + hijrahDateTime.toInstant(ZoneOffset.UTC)); } } /* LotusJavaPrince and Mahesh - Global Calendar Display --- Japanese Calendar --- Chronology: Japanese DateTime: Japanese Heisei 36-05-22T15:31:00.123 Instant (UTC): 2025-05-22T10:01:00.123Z --- Hijrah Calendar --- Chronology: Hijrah-umalqura DateTime: Hijrah-umalqura AH 1446-11-14T15:31:00.123 Instant (UTC): 2025-05-22T10:01:00.123Z */
ChronoLocalDateTime
is a powerful abstraction that allows date-time manipulation across different calendar systems.
- Crucial for internationalization (i18n) and supporting regional calendars.
- It enhances flexibility, user experience, and global compatibility in enterprise applications.