ChronoLocalDateTime

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.
Scroll to Top