When building scheduling applications, alarm systems, or tracking business hours, you need to work with time independently of dates. LocalTime handles clock time operations with nanosecond precision.

LocalTime represents a time without date in the ISO calendar system (hour-minute-second-nanosecond). It's part of the java.time package introduced in Java 8.

Getting Current Time

Current.java
Replay: real traced execution (multi-file project)
// Current time

import java.time.LocalTime;

public class Current {

    public static void main(String[] args) {
        // Static replay uses a fixed sample "now".
        LocalTime now = LocalTime.of(14, 30, 45, 123456789);
        System.out.println("Sample now: " + now);

        // Time components
        int hour = now.getHour();
        int minute = now.getMinute();
        int second = now.getSecond();
        int nano = now.getNano();

        System.out.println("\nTime components:");
        System.out.println("Hour: " + hour);
        System.out.println("Minute: " + minute);
        System.out.println("Second: " + second);
        System.out.println("Nanosecond: " + nano);

        // Formatted output
        System.out.println("\nFormatted:");
        System.out.println(String.format("%02d:%02d:%02d", hour, minute, second));

        // 12-hour format
        int hour12 = hour % 12;
        if (hour12 == 0) hour12 = 12;
        String amPm = hour < 12 ? "AM" : "PM";
        System.out.println(String.format("%02d:%02d %s", hour12, minute, amPm));

        // Truncated times
        LocalTime toMinute = now.withSecond(0).withNano(0);
        System.out.println("\nTruncated to minute: " + toMinute);

        LocalTime toSecond = now.withNano(0);
        System.out.println("Truncated to second: " + toSecond);

        // Special times
        LocalTime midnight = LocalTime.MIDNIGHT;
        LocalTime noon = LocalTime.NOON;
        LocalTime min = LocalTime.MIN;
        LocalTime max = LocalTime.MAX;

        System.out.println("\nSpecial times:");
        System.out.println("Midnight: " + midnight);
        System.out.println("Noon: " + noon);
        System.out.println("Min: " + min);
        System.out.println("Max: " + max);

        // Seconds of day
        int secondOfDay = now.toSecondOfDay();
        System.out.println("\nSecond of day: " + secondOfDay);
        System.out.println("Total seconds in day: " + (24 * 60 * 60));
    }

}
  1. now ← 14:30:45.123456789, hour ← 14, minute ← 30, second ← 45

    7public static void main(String[] args) {8    // Static replay uses a fixed sample "now".9    LocalTime now→ 14:30:45.123456789 = LocalTime.of(14, 30, 45, 123456789);10    System.out.println("Sample now: " + now14:30:45.123456789);1112    // Time components13    int hour→ 14 = now.getHour();14    int minute→ 30 = now.getMinute();15    int second→ 45 = now.getSecond();16    int nano→ 123456789 = now.getNano();1718    System.out.println("\nTime components:");19    System.out.println("Hour: " + hour14);20    System.out.println("Minute: " + minute30);21    System.out.println("Second: " + second45);22    System.out.println("Nanosecond: " + nano123456789);2324    // Formatted output25    System.out.println("\nFormatted:");26    System.out.println(String.format("%02d:%02d:%02d", hour14, minute30, second45));2728    // 12-hour format29    int hour12→ 2 = hour14 % 12;30    if (hour12 == 0) hour12 = 12;31    String amPm→ PM = hour14 < 12 ? "AM" : "PM";32    System.out.println(String.format("%02d:%02d %s", hour122, minute30, amPmPM));3334    // Truncated times35    LocalTime toMinute→ 14:30 = now.withSecond(0).withNano(0);36    System.out.println("\nTruncated to minute: " + toMinute14:30);3738    LocalTime toSecond→ 14:30:45 = now.withNano(0);39    System.out.println("Truncated to second: " + toSecond14:30:45);4041    // Special times42    LocalTime midnight→ 00:00 = LocalTime.MIDNIGHT;43    LocalTime noon→ 12:00 = LocalTime.NOON;44    LocalTime min→ 00:00 = LocalTime.MIN;45    LocalTime max→ 23:59:59.999999999 = LocalTime.MAX;4647    System.out.println("\nSpecial times:");48    System.out.println("Midnight: " + midnight00:00);49    System.out.println("Noon: " + noon12:00);50    System.out.println("Min: " + min00:00);51    System.out.println("Max: " + max23:59:59.999999999);5253    // Seconds of day54    int secondOfDay→ 52245 = now.toSecondOfDay();55    System.out.println("\nSecond of day: " + secondOfDay52245);56    System.out.println("Total seconds in day: " + (24 * 60 * 60));57}
    outputSample now: 14:30:45.123456789
    
    Time components:
    Hour: 14
    Minute: 30
    Second: 45
    Nanosecond: 123456789
    
    Formatted:
    14:30:45
    02:30 PM
    
    Truncated to minute: 14:30
    Truncated to second: 14:30:45
    
    Special times:
    Midnight: 00:00
    Noon: 12:00
    Min: 00:00
    Max: 23:59:59.999999999
    
    Second of day: 52245
    Total seconds in day: 86400
LocalTime An immutable time object representing hour, minute, second, and nanosecond without date or timezone information.

Creating Specific Times

time1
Create.java
Replay: real traced execution (multi-file project)
// Create specific time

import java.time.LocalTime;

public class Create {

    public static void main(String[] args) {
        // Create with hour and minute
        LocalTime time1 = LocalTime.of(14, 30);
        System.out.println("Time 1 (HH:MM): " + time1);

        // Create with hour, minute, second
        LocalTime time2 = LocalTime.of(14, 30, 45);
        System.out.println("Time 2 (HH:MM:SS): " + time2);

        // Create with hour, minute, second, nanosecond
        LocalTime time3 = LocalTime.of(14, 30, 45, 123456789);
        System.out.println("Time 3 (with nanos): " + time3);

        // Common times
        LocalTime morning = LocalTime.of(9, 0);
        LocalTime lunchTime = LocalTime.of(12, 30);
        LocalTime evening = LocalTime.of(18, 0);

        System.out.println("\nCommon times:");
        System.out.println("Morning: " + morning);
        System.out.println("Lunch: " + lunchTime);
        System.out.println("Evening: " + evening);

        // Midnight and noon
        LocalTime midnight = LocalTime.MIDNIGHT;  // 00:00
        LocalTime noon = LocalTime.NOON;          // 12:00

        System.out.println("\nSpecial:");
        System.out.println("Midnight: " + midnight);
        System.out.println("Noon: " + noon);

        // Modify components
        LocalTime modified = time1.withHour(16).withMinute(45);
        System.out.println("\nModified: " + modified);

        // Create from second of day
        int secondOfDay = 12 * 60 * 60 + 30 * 60;  // 12:30
        LocalTime fromSeconds = LocalTime.ofSecondOfDay(secondOfDay);
        System.out.println("From seconds (12:30): " + fromSeconds);

        // Create from nanosecond of day
        long nanoOfDay = 12L * 60 * 60 * 1_000_000_000 + 30L * 60 * 1_000_000_000;
        LocalTime fromNanos = LocalTime.ofNanoOfDay(nanoOfDay);
        System.out.println("From nanos (12:30): " + fromNanos);

        // Min and max
        LocalTime min = LocalTime.MIN;
        LocalTime max = LocalTime.MAX;
        System.out.println("\nMin: " + min);
        System.out.println("Max: " + max);

        // Generate hourly times
        System.out.println("\nHourly times:");
        for (int hour = 9; hour <= 17; hour++) {
            LocalTime t = LocalTime.of(hour, 0);
            System.out.println("  " + t);
        }
    }

}
// Create specific time

import java.time.LocalTime;

public class Create {

    public static void main(String[] args) {
        // Create with hour and minute
        LocalTime time1 = LocalTime.of(9, 15);
        System.out.println("Time 1 (HH:MM): " + time1);

        // Create with hour, minute, second
        LocalTime time2 = LocalTime.of(14, 30, 45);
        System.out.println("Time 2 (HH:MM:SS): " + time2);

        // Create with hour, minute, second, nanosecond
        LocalTime time3 = LocalTime.of(14, 30, 45, 123456789);
        System.out.println("Time 3 (with nanos): " + time3);

        // Common times
        LocalTime morning = LocalTime.of(9, 0);
        LocalTime lunchTime = LocalTime.of(12, 30);
        LocalTime evening = LocalTime.of(18, 0);

        System.out.println("\nCommon times:");
        System.out.println("Morning: " + morning);
        System.out.println("Lunch: " + lunchTime);
        System.out.println("Evening: " + evening);

        // Midnight and noon
        LocalTime midnight = LocalTime.MIDNIGHT;  // 00:00
        LocalTime noon = LocalTime.NOON;          // 12:00

        System.out.println("\nSpecial:");
        System.out.println("Midnight: " + midnight);
        System.out.println("Noon: " + noon);

        // Modify components
        LocalTime modified = time1.withHour(16).withMinute(45);
        System.out.println("\nModified: " + modified);

        // Create from second of day
        int secondOfDay = 12 * 60 * 60 + 30 * 60;  // 12:30
        LocalTime fromSeconds = LocalTime.ofSecondOfDay(secondOfDay);
        System.out.println("From seconds (12:30): " + fromSeconds);

        // Create from nanosecond of day
        long nanoOfDay = 12L * 60 * 60 * 1_000_000_000 + 30L * 60 * 1_000_000_000;
        LocalTime fromNanos = LocalTime.ofNanoOfDay(nanoOfDay);
        System.out.println("From nanos (12:30): " + fromNanos);

        // Min and max
        LocalTime min = LocalTime.MIN;
        LocalTime max = LocalTime.MAX;
        System.out.println("\nMin: " + min);
        System.out.println("Max: " + max);

        // Generate hourly times
        System.out.println("\nHourly times:");
        for (int hour = 9; hour <= 17; hour++) {
            LocalTime t = LocalTime.of(hour, 0);
            System.out.println("  " + t);
        }
    }

}
  1. time1 ← 14:30, time2 ← 14:30:45, time3 ← 14:30:45.123456789, morning ← 09:00

    7public static void main(String[] args) {8    // Create with hour and minute9    LocalTime time1→ 14:30 = LocalTime.of(14, 30); //@time1=LocalTime.of(14, 30), LocalTime.of(9, 15)10    System.out.println("Time 1 (HH:MM): " + time114:30);1112    // Create with hour, minute, second13    LocalTime time2→ 14:30:45 = LocalTime.of(14, 30, 45);14    System.out.println("Time 2 (HH:MM:SS): " + time214:30:45);1516    // Create with hour, minute, second, nanosecond17    LocalTime time3→ 14:30:45.123456789 = LocalTime.of(14, 30, 45, 123456789);18    System.out.println("Time 3 (with nanos): " + time314:30:45.123456789);1920    // Common times21    LocalTime morning→ 09:00 = LocalTime.of(9, 0);22    LocalTime lunchTime→ 12:30 = LocalTime.of(12, 30);23    LocalTime evening→ 18:00 = LocalTime.of(18, 0);24    25    System.out.println("\nCommon times:");26    System.out.println("Morning: " + morning09:00);27    System.out.println("Lunch: " + lunchTime12:30);28    System.out.println("Evening: " + evening18:00);2930    // Midnight and noon31    LocalTime midnight→ 00:00 = LocalTime.MIDNIGHT;  // 00:0032    LocalTime noon→ 12:00 = LocalTime.NOON;          // 12:0033    34    System.out.println("\nSpecial:");35    System.out.println("Midnight: " + midnight00:00);36    System.out.println("Noon: " + noon12:00);3738    // Modify components39    LocalTime modified→ 16:45 = time1.withHour(16).withMinute(45);40    System.out.println("\nModified: " + modified16:45);4142    // Create from second of day43    int secondOfDay→ 45000 = 12 * 60 * 60 + 30 * 60;  // 12:3044    LocalTime fromSeconds→ 12:30 = LocalTime.ofSecondOfDay(secondOfDay45000);45    System.out.println("From seconds (12:30): " + fromSeconds12:30);4647    // Create from nanosecond of day48    long nanoOfDay→ 45000000000000 = 12L * 60 * 60 * 1_000_000_000 + 30L * 60 * 1_000_000_000;49    LocalTime fromNanos→ 12:30 = LocalTime.ofNanoOfDay(nanoOfDay45000000000000);50    System.out.println("From nanos (12:30): " + fromNanos12:30);5152    // Min and max53    LocalTime min→ 00:00 = LocalTime.MIN;54    LocalTime max→ 23:59:59.999999999 = LocalTime.MAX;55    System.out.println("\nMin: " + min00:00);56    System.out.println("Max: " + max23:59:59.999999999);5758    // Generate hourly times59    System.out.println("\nHourly times:");60    for (int hour = 9; hour <= 17; hour++) {
    outputTime 1 (HH:MM): 14:30
    Time 2 (HH:MM:SS): 14:30:45
    Time 3 (with nanos): 14:30:45.123456789
    
    Common times:
    Morning: 09:00
    Lunch: 12:30
    Evening: 18:00
    
    Special:
    Midnight: 00:00
    Noon: 12:00
    
    Modified: 16:45
    From seconds (12:30): 12:30
    From nanos (12:30): 12:30
    
    Min: 00:00
    Max: 23:59:59.999999999
    
    Hourly times:
  2. t ← 09:00

    pass 1 of 9
    59System.out.println("\nHourly times:");60for (int hour9 = 9; hour <= 17; hour++) {61    LocalTime t→ 09:00 = LocalTime.of(hour9, 0);62    System.out.println("  " + t09:00);63}
    output  09:00
    All 9 passes — pass 1 is the card above
    passhourt
    1909:00
    21010:00
    31111:00
    41212:00
    51313:00
    61414:00
    71515:00
    81616:00
    91717:00
  1. time1 ← 09:15, time2 ← 14:30:45, time3 ← 14:30:45.123456789, morning ← 09:00

    7public static void main(String[] args) {8    // Create with hour and minute9    LocalTime time1→ 09:15 = LocalTime.of(9, 15);10    System.out.println("Time 1 (HH:MM): " + time109:15);1112    // Create with hour, minute, second13    LocalTime time2→ 14:30:45 = LocalTime.of(14, 30, 45);14    System.out.println("Time 2 (HH:MM:SS): " + time214:30:45);1516    // Create with hour, minute, second, nanosecond17    LocalTime time3→ 14:30:45.123456789 = LocalTime.of(14, 30, 45, 123456789);18    System.out.println("Time 3 (with nanos): " + time314:30:45.123456789);1920    // Common times21    LocalTime morning→ 09:00 = LocalTime.of(9, 0);22    LocalTime lunchTime→ 12:30 = LocalTime.of(12, 30);23    LocalTime evening→ 18:00 = LocalTime.of(18, 0);24    25    System.out.println("\nCommon times:");26    System.out.println("Morning: " + morning09:00);27    System.out.println("Lunch: " + lunchTime12:30);28    System.out.println("Evening: " + evening18:00);2930    // Midnight and noon31    LocalTime midnight→ 00:00 = LocalTime.MIDNIGHT;  // 00:0032    LocalTime noon→ 12:00 = LocalTime.NOON;          // 12:0033    34    System.out.println("\nSpecial:");35    System.out.println("Midnight: " + midnight00:00);36    System.out.println("Noon: " + noon12:00);3738    // Modify components39    LocalTime modified→ 16:45 = time1.withHour(16).withMinute(45);40    System.out.println("\nModified: " + modified16:45);4142    // Create from second of day43    int secondOfDay→ 45000 = 12 * 60 * 60 + 30 * 60;  // 12:3044    LocalTime fromSeconds→ 12:30 = LocalTime.ofSecondOfDay(secondOfDay45000);45    System.out.println("From seconds (12:30): " + fromSeconds12:30);4647    // Create from nanosecond of day48    long nanoOfDay→ 45000000000000 = 12L * 60 * 60 * 1_000_000_000 + 30L * 60 * 1_000_000_000;49    LocalTime fromNanos→ 12:30 = LocalTime.ofNanoOfDay(nanoOfDay45000000000000);50    System.out.println("From nanos (12:30): " + fromNanos12:30);5152    // Min and max53    LocalTime min→ 00:00 = LocalTime.MIN;54    LocalTime max→ 23:59:59.999999999 = LocalTime.MAX;55    System.out.println("\nMin: " + min00:00);56    System.out.println("Max: " + max23:59:59.999999999);5758    // Generate hourly times59    System.out.println("\nHourly times:");60    for (int hour = 9; hour <= 17; hour++) {
    outputTime 1 (HH:MM): 09:15
    Time 2 (HH:MM:SS): 14:30:45
    Time 3 (with nanos): 14:30:45.123456789
    
    Common times:
    Morning: 09:00
    Lunch: 12:30
    Evening: 18:00
    
    Special:
    Midnight: 00:00
    Noon: 12:00
    
    Modified: 16:45
    From seconds (12:30): 12:30
    From nanos (12:30): 12:30
    
    Min: 00:00
    Max: 23:59:59.999999999
    
    Hourly times:
  2. t ← 09:00

    pass 1 of 9
    59System.out.println("\nHourly times:");60for (int hour9 = 9; hour <= 17; hour++) {61    LocalTime t→ 09:00 = LocalTime.of(hour9, 0);62    System.out.println("  " + t09:00);63}
    output  09:00
    All 9 passes — pass 1 is the card above
    passhourt
    1909:00
    21010:00
    31111:00
    41212:00
    51313:00
    61414:00
    71515:00
    81616:00
    91717:00

Time Components

time
Components.java
Replay: real traced execution (multi-file project)
// Time components

import java.time.LocalTime;

public class Components {

    public static void main(String[] args) {
        LocalTime time = LocalTime.of(14, 30, 45, 123456789);

        System.out.println("Time: " + time);
        System.out.println();

        // Hour, minute, second
        System.out.println("Hour: " + time.getHour());
        System.out.println("Minute: " + time.getMinute());
        System.out.println("Second: " + time.getSecond());
        System.out.println("Nanosecond: " + time.getNano());

        // Convert to seconds of day
        int secondOfDay = time.toSecondOfDay();
        System.out.println("\nSecond of day: " + secondOfDay);

        // Convert to nanoseconds of day
        long nanoOfDay = time.toNanoOfDay();
        System.out.println("Nano of day: " + nanoOfDay);

        // Calculate milliseconds component
        int millis = time.getNano() / 1_000_000;
        System.out.println("\nMilliseconds: " + millis);

        // 12-hour format components
        int hour24 = time.getHour();
        int hour12 = hour24 % 12;
        if (hour12 == 0) hour12 = 12;
        String amPm = hour24 < 12 ? "AM" : "PM";

        System.out.println("\n12-hour format:");
        System.out.println("Hour (12): " + hour12);
        System.out.println("AM/PM: " + amPm);
        System.out.println("Time: " + String.format("%d:%02d %s",
            hour12, time.getMinute(), amPm));

        // Truncate precision
        LocalTime toMinute = time.withSecond(0).withNano(0);
        LocalTime toSecond = time.withNano(0);

        System.out.println("\nTruncated:");
        System.out.println("Original: " + time);
        System.out.println("To minute: " + toMinute);
        System.out.println("To second: " + toSecond);

        // Check if before/after noon
        System.out.println("\nIs before noon: " + time.isBefore(LocalTime.NOON));
        System.out.println("Is after noon: " + time.isAfter(LocalTime.NOON));

        // Time periods
        System.out.println("\nTime period:");
        if (time.getHour() < 12) {
            System.out.println("Morning");
        } else if (time.getHour() < 17) {
            System.out.println("Afternoon");
        } else if (time.getHour() < 21) {
            System.out.println("Evening");
        } else {
            System.out.println("Night");
        }

        // Display various times
        System.out.println("\nVarious times of day:");
        LocalTime[] times = {
            LocalTime.of(6, 0),
            LocalTime.of(12, 0),
            LocalTime.of(18, 0),
            LocalTime.of(23, 59)
        };

        for (LocalTime t : times) {
            System.out.println(t + " - " + t.getHour() + "h " +
                             t.getMinute() + "m");
        }
    }

}
// Time components

import java.time.LocalTime;

public class Components {

    public static void main(String[] args) {
        LocalTime time = LocalTime.of(9, 5, 0);

        System.out.println("Time: " + time);
        System.out.println();

        // Hour, minute, second
        System.out.println("Hour: " + time.getHour());
        System.out.println("Minute: " + time.getMinute());
        System.out.println("Second: " + time.getSecond());
        System.out.println("Nanosecond: " + time.getNano());

        // Convert to seconds of day
        int secondOfDay = time.toSecondOfDay();
        System.out.println("\nSecond of day: " + secondOfDay);

        // Convert to nanoseconds of day
        long nanoOfDay = time.toNanoOfDay();
        System.out.println("Nano of day: " + nanoOfDay);

        // Calculate milliseconds component
        int millis = time.getNano() / 1_000_000;
        System.out.println("\nMilliseconds: " + millis);

        // 12-hour format components
        int hour24 = time.getHour();
        int hour12 = hour24 % 12;
        if (hour12 == 0) hour12 = 12;
        String amPm = hour24 < 12 ? "AM" : "PM";

        System.out.println("\n12-hour format:");
        System.out.println("Hour (12): " + hour12);
        System.out.println("AM/PM: " + amPm);
        System.out.println("Time: " + String.format("%d:%02d %s",
            hour12, time.getMinute(), amPm));

        // Truncate precision
        LocalTime toMinute = time.withSecond(0).withNano(0);
        LocalTime toSecond = time.withNano(0);

        System.out.println("\nTruncated:");
        System.out.println("Original: " + time);
        System.out.println("To minute: " + toMinute);
        System.out.println("To second: " + toSecond);

        // Check if before/after noon
        System.out.println("\nIs before noon: " + time.isBefore(LocalTime.NOON));
        System.out.println("Is after noon: " + time.isAfter(LocalTime.NOON));

        // Time periods
        System.out.println("\nTime period:");
        if (time.getHour() < 12) {
            System.out.println("Morning");
        } else if (time.getHour() < 17) {
            System.out.println("Afternoon");
        } else if (time.getHour() < 21) {
            System.out.println("Evening");
        } else {
            System.out.println("Night");
        }

        // Display various times
        System.out.println("\nVarious times of day:");
        LocalTime[] times = {
            LocalTime.of(6, 0),
            LocalTime.of(12, 0),
            LocalTime.of(18, 0),
            LocalTime.of(23, 59)
        };

        for (LocalTime t : times) {
            System.out.println(t + " - " + t.getHour() + "h " +
                             t.getMinute() + "m");
        }
    }

}
  1. time ← 14:30:45.123456789, secondOfDay ← 52245, nanoOfDay ← 52245123456789

    7public static void main(String[] args) {8    LocalTime time→ 14:30:45.123456789 = LocalTime.of(14, 30, 45, 123456789); //@time=LocalTime.of(14, 30, 45, 123456789), LocalTime.of(9, 5, 0)9    10    System.out.println("Time: " + time14:30:45.123456789);11    System.out.println();1213    // Hour, minute, second14    System.out.println("Hour: " + time.getHour());15    System.out.println("Minute: " + time.getMinute());16    System.out.println("Second: " + time.getSecond());17    System.out.println("Nanosecond: " + time.getNano());1819    // Convert to seconds of day20    int secondOfDay→ 52245 = time.toSecondOfDay();21    System.out.println("\nSecond of day: " + secondOfDay52245);2223    // Convert to nanoseconds of day24    long nanoOfDay→ 52245123456789 = time.toNanoOfDay();25    System.out.println("Nano of day: " + nanoOfDay52245123456789);2627    // Calculate milliseconds component28    int millis→ 123 = time.getNano() / 1_000_000;29    System.out.println("\nMilliseconds: " + millis123);3031    // 12-hour format components32    int hour24→ 14 = time.getHour();33    int hour12→ 2 = hour2414 % 12;34    if (hour12 == 0) hour12 = 12;35    String amPm→ PM = hour2414 < 12 ? "AM" : "PM";36    37    System.out.println("\n12-hour format:");38    System.out.println("Hour (12): " + hour122);39    System.out.println("AM/PM: " + amPmPM);40    System.out.println("Time: " + String.format("%d:%02d %s", 41        hour122, time.getMinute(), amPmPM));4243    // Truncate precision44    LocalTime toMinute→ 14:30 = time.withSecond(0).withNano(0);45    LocalTime toSecond→ 14:30:45 = time.withNano(0);46    47    System.out.println("\nTruncated:");48    System.out.println("Original: " + time14:30:45.123456789);49    System.out.println("To minute: " + toMinute14:30);50    System.out.println("To second: " + toSecond14:30:45);5152    // Check if before/after noon53    System.out.println("\nIs before noon: " + time.isBefore(LocalTime.NOON));54    System.out.println("Is after noon: " + time.isAfter(LocalTime.NOON));5556    // Time periods57    System.out.println("\nTime period:");58    if (time.getHour() < 12) {
    outputTime: 14:30:45.123456789
    Hour: 14
    Minute: 30
    Second: 45
    Nanosecond: 123456789
    
    Second of day: 52245
    Nano of day: 52245123456789
    
    Milliseconds: 123
    
    12-hour format:
    Hour (12): 2
    AM/PM: PM
    Time: 2:30 PM
    
    Truncated:
    Original: 14:30:45.123456789
    To minute: 14:30
    To second: 14:30:45
    
    Is before noon: false
    Is after noon: true
    
    Time period:
  2. if (time.getHour() < 17)

    59    System.out.println("Morning");60} else if (time.getHour() < 17) {61    System.out.println("Afternoon");62} else if (time.getHour() < 21) {
    outputAfternoon
  3. LocalTime[] times =

    68// Display various times69System.out.println("\nVarious times of day:");70LocalTime[] times = {71    LocalTime.of(6, 0),72    LocalTime.of(12, 0),73    LocalTime.of(18, 0),74    LocalTime.of(23, 59)75};
    output
    Various times of day:
  4. for (LocalTime t : times)

    pass 1 of 4
    77for (LocalTime t06:00 : times) {78    System.out.println(t06:00 + " - " + t.getHour() + "h " + 79                     t.getMinute() + "m");80}
    output06:00 - 6h 0m
    All 4 passes — pass 1 is the card above
    passt
    106:00
    212:00
    318:00
    423:59
  1. time ← 09:05, secondOfDay ← 32700, nanoOfDay ← 32700000000000

    7public static void main(String[] args) {8    LocalTime time→ 09:05 = LocalTime.of(9, 5, 0);9    10    System.out.println("Time: " + time09:05);11    System.out.println();1213    // Hour, minute, second14    System.out.println("Hour: " + time.getHour());15    System.out.println("Minute: " + time.getMinute());16    System.out.println("Second: " + time.getSecond());17    System.out.println("Nanosecond: " + time.getNano());1819    // Convert to seconds of day20    int secondOfDay→ 32700 = time.toSecondOfDay();21    System.out.println("\nSecond of day: " + secondOfDay32700);2223    // Convert to nanoseconds of day24    long nanoOfDay→ 32700000000000 = time.toNanoOfDay();25    System.out.println("Nano of day: " + nanoOfDay32700000000000);2627    // Calculate milliseconds component28    int millis→ 0 = time.getNano() / 1_000_000;29    System.out.println("\nMilliseconds: " + millis0);3031    // 12-hour format components32    int hour24→ 9 = time.getHour();33    int hour12→ 9 = hour249 % 12;34    if (hour12 == 0) hour12 = 12;35    String amPm→ AM = hour249 < 12 ? "AM" : "PM";36    37    System.out.println("\n12-hour format:");38    System.out.println("Hour (12): " + hour129);39    System.out.println("AM/PM: " + amPmAM);40    System.out.println("Time: " + String.format("%d:%02d %s", 41        hour129, time.getMinute(), amPmAM));4243    // Truncate precision44    LocalTime toMinute→ 09:05 = time.withSecond(0).withNano(0);45    LocalTime toSecond→ 09:05 = time.withNano(0);46    47    System.out.println("\nTruncated:");48    System.out.println("Original: " + time09:05);49    System.out.println("To minute: " + toMinute09:05);50    System.out.println("To second: " + toSecond09:05);5152    // Check if before/after noon53    System.out.println("\nIs before noon: " + time.isBefore(LocalTime.NOON));54    System.out.println("Is after noon: " + time.isAfter(LocalTime.NOON));5556    // Time periods57    System.out.println("\nTime period:");58    if (time.getHour() < 12) {
    outputTime: 09:05
    Hour: 9
    Minute: 5
    Second: 0
    Nanosecond: 0
    
    Second of day: 32700
    Nano of day: 32700000000000
    
    Milliseconds: 0
    
    12-hour format:
    Hour (12): 9
    AM/PM: AM
    Time: 9:05 AM
    
    Truncated:
    Original: 09:05
    To minute: 09:05
    To second: 09:05
    
    Is before noon: true
    Is after noon: false
    
    Time period:
  2. if (time.getHour() < 12)

    57System.out.println("\nTime period:");58if (time.getHour() < 12) {59    System.out.println("Morning");60} else if (time.getHour() < 17) {
    outputMorning
  3. LocalTime[] times =

    68// Display various times69System.out.println("\nVarious times of day:");70LocalTime[] times = {71    LocalTime.of(6, 0),72    LocalTime.of(12, 0),73    LocalTime.of(18, 0),74    LocalTime.of(23, 59)75};
    output
    Various times of day:
  4. for (LocalTime t : times)

    pass 1 of 4
    77for (LocalTime t06:00 : times) {78    System.out.println(t06:00 + " - " + t.getHour() + "h " + 79                     t.getMinute() + "m");80}
    output06:00 - 6h 0m
    All 4 passes — pass 1 is the card above
    passt
    106:00
    212:00
    318:00
    423:59
time_components Individual parts of a time that can be extracted: hour (0-23), minute (0-59), second (0-59), nanosecond.

Comparing Times

check
Compare.java
Replay: real traced execution (multi-file project)
// Compare times

import java.time.LocalTime;

public class Compare {

    public static void main(String[] args) {
        LocalTime time1 = LocalTime.of(9, 30);
        LocalTime time2 = LocalTime.of(14, 45);
        LocalTime time3 = LocalTime.of(9, 30);

        System.out.println("Time 1: " + time1);
        System.out.println("Time 2: " + time2);
        System.out.println("Time 3: " + time3);
        System.out.println();

        // isBefore, isAfter
        System.out.println("time1.isBefore(time2): " + time1.isBefore(time2));
        System.out.println("time1.isAfter(time2): " + time1.isAfter(time2));

        // equals
        System.out.println("\ntime1.equals(time2): " + time1.equals(time2));
        System.out.println("time1.equals(time3): " + time1.equals(time3));

        // compareTo
        System.out.println("\ntime1.compareTo(time2): " + time1.compareTo(time2));
        System.out.println("time2.compareTo(time1): " + time2.compareTo(time1));
        System.out.println("time1.compareTo(time3): " + time1.compareTo(time3));

        // Current time comparisons
        LocalTime now = LocalTime.of(13, 15);
        System.out.println("\nSample now: " + now);
        System.out.println("9:30 is before now: " + time1.isBefore(now));
        System.out.println("14:45 is after now: " + time2.isAfter(now));

        // Find earliest/latest
        LocalTime earliest = time1.isBefore(time2) ? time1 : time2;
        LocalTime latest = time1.isAfter(time2) ? time1 : time2;

        System.out.println("\nEarliest: " + earliest);
        System.out.println("Latest: " + latest);

        // Check if in time range
        LocalTime check = LocalTime.of(12, 0);
        LocalTime start = LocalTime.of(9, 0);
        LocalTime end = LocalTime.of(17, 0);

        boolean inRange = !check.isBefore(start) && !check.isAfter(end);
        System.out.println("\n" + check + " in range [" + start + ", " + end + "]: " + inRange);

        // Sort times
        LocalTime[] times = {
            LocalTime.of(15, 30),
            LocalTime.of(9, 0),
            LocalTime.of(12, 15)
        };

        System.out.println("\nBefore sort:");
        for (LocalTime t : times) {
            System.out.println("  " + t);
        }

        java.util.Arrays.sort(times);

        System.out.println("After sort:");
        for (LocalTime t : times) {
            System.out.println("  " + t);
        }

        // Business hours check
        LocalTime businessStart = LocalTime.of(9, 0);
        LocalTime businessEnd = LocalTime.of(17, 0);

        System.out.println("\nBusiness hours check:");
        LocalTime[] testTimes = {
            LocalTime.of(8, 30),
            LocalTime.of(12, 0),
            LocalTime.of(18, 0)
        };

        for (LocalTime t : testTimes) {
            boolean isDuringBusiness = !t.isBefore(businessStart) && t.isBefore(businessEnd);
            System.out.println(t + " during business: " + isDuringBusiness);
        }

        // Midnight crossing
        LocalTime late = LocalTime.of(23, 0);
        LocalTime early = LocalTime.of(1, 0);
        System.out.println("\n23:00 is before 01:00: " + late.isBefore(early));
    }

}
// Compare times

import java.time.LocalTime;

public class Compare {

    public static void main(String[] args) {
        LocalTime time1 = LocalTime.of(9, 30);
        LocalTime time2 = LocalTime.of(14, 45);
        LocalTime time3 = LocalTime.of(9, 30);

        System.out.println("Time 1: " + time1);
        System.out.println("Time 2: " + time2);
        System.out.println("Time 3: " + time3);
        System.out.println();

        // isBefore, isAfter
        System.out.println("time1.isBefore(time2): " + time1.isBefore(time2));
        System.out.println("time1.isAfter(time2): " + time1.isAfter(time2));

        // equals
        System.out.println("\ntime1.equals(time2): " + time1.equals(time2));
        System.out.println("time1.equals(time3): " + time1.equals(time3));

        // compareTo
        System.out.println("\ntime1.compareTo(time2): " + time1.compareTo(time2));
        System.out.println("time2.compareTo(time1): " + time2.compareTo(time1));
        System.out.println("time1.compareTo(time3): " + time1.compareTo(time3));

        // Current time comparisons
        LocalTime now = LocalTime.of(13, 15);
        System.out.println("\nSample now: " + now);
        System.out.println("9:30 is before now: " + time1.isBefore(now));
        System.out.println("14:45 is after now: " + time2.isAfter(now));

        // Find earliest/latest
        LocalTime earliest = time1.isBefore(time2) ? time1 : time2;
        LocalTime latest = time1.isAfter(time2) ? time1 : time2;

        System.out.println("\nEarliest: " + earliest);
        System.out.println("Latest: " + latest);

        // Check if in time range
        LocalTime check = LocalTime.of(18, 30);
        LocalTime start = LocalTime.of(9, 0);
        LocalTime end = LocalTime.of(17, 0);

        boolean inRange = !check.isBefore(start) && !check.isAfter(end);
        System.out.println("\n" + check + " in range [" + start + ", " + end + "]: " + inRange);

        // Sort times
        LocalTime[] times = {
            LocalTime.of(15, 30),
            LocalTime.of(9, 0),
            LocalTime.of(12, 15)
        };

        System.out.println("\nBefore sort:");
        for (LocalTime t : times) {
            System.out.println("  " + t);
        }

        java.util.Arrays.sort(times);

        System.out.println("After sort:");
        for (LocalTime t : times) {
            System.out.println("  " + t);
        }

        // Business hours check
        LocalTime businessStart = LocalTime.of(9, 0);
        LocalTime businessEnd = LocalTime.of(17, 0);

        System.out.println("\nBusiness hours check:");
        LocalTime[] testTimes = {
            LocalTime.of(8, 30),
            LocalTime.of(12, 0),
            LocalTime.of(18, 0)
        };

        for (LocalTime t : testTimes) {
            boolean isDuringBusiness = !t.isBefore(businessStart) && t.isBefore(businessEnd);
            System.out.println(t + " during business: " + isDuringBusiness);
        }

        // Midnight crossing
        LocalTime late = LocalTime.of(23, 0);
        LocalTime early = LocalTime.of(1, 0);
        System.out.println("\n23:00 is before 01:00: " + late.isBefore(early));
    }

}
  1. time1 ← 09:30, time2 ← 14:45, time3 ← 09:30, now ← 13:15, earliest ← 09:30

    7public static void main(String[] args) {8    LocalTime time1→ 09:30 = LocalTime.of(9, 30);9    LocalTime time2→ 14:45 = LocalTime.of(14, 45);10    LocalTime time3→ 09:30 = LocalTime.of(9, 30);1112    System.out.println("Time 1: " + time109:30);13    System.out.println("Time 2: " + time214:45);14    System.out.println("Time 3: " + time309:30);15    System.out.println();1617    // isBefore, isAfter18    System.out.println("time1.isBefore(time2): " + time1.isBefore(time214:45));19    System.out.println("time1.isAfter(time2): " + time1.isAfter(time214:45));2021    // equals22    System.out.println("\ntime1.equals(time2): " + time1.equals(time214:45));23    System.out.println("time1.equals(time3): " + time1.equals(time309:30));2425    // compareTo26    System.out.println("\ntime1.compareTo(time2): " + time1.compareTo(time214:45));27    System.out.println("time2.compareTo(time1): " + time2.compareTo(time109:30));28    System.out.println("time1.compareTo(time3): " + time1.compareTo(time309:30));2930    // Current time comparisons31    LocalTime now→ 13:15 = LocalTime.of(13, 15);32    System.out.println("\nSample now: " + now13:15);33    System.out.println("9:30 is before now: " + time1.isBefore(now13:15));34    System.out.println("14:45 is after now: " + time2.isAfter(now13:15));3536    // Find earliest/latest37    LocalTime earliest→ 09:30 = time1.isBefore(time214:45) ? time109:30 : time2;38    LocalTime latest→ 14:45 = time1.isAfter(time214:45) ? time109:30 : time2;39    40    System.out.println("\nEarliest: " + earliest09:30);41    System.out.println("Latest: " + latest14:45);4243    // Check if in time range44    LocalTime check→ 12:00 = LocalTime.of(12, 0); //@check=LocalTime.of(12, 0), LocalTime.of(18, 30)45    LocalTime start→ 09:00 = LocalTime.of(9, 0);46    LocalTime end→ 17:00 = LocalTime.of(17, 0);4748    boolean inRange→ true = !check.isBefore(start09:00) && !check.isAfter(end17:00);49    System.out.println("\n" + check12:00 + " in range [" + start09:00 + ", " + end17:00 + "]: " + inRangetrue);5051    // Sort times52    LocalTime[] times = {53        LocalTime.of(15, 30),54        LocalTime.of(9, 0),55        LocalTime.of(12, 15)56    };5758    System.out.println("\nBefore sort:");59    for (LocalTime t : times) {
    outputTime 1: 09:30
    Time 2: 14:45
    Time 3: 09:30
    time1.isBefore(time2): true
    time1.isAfter(time2): false
    
    time1.equals(time2): false
    time1.equals(time3): true
    
    time1.compareTo(time2): -1
    time2.compareTo(time1): 1
    time1.compareTo(time3): 0
    
    Sample now: 13:15
    9:30 is before now: true
    14:45 is after now: true
    
    Earliest: 09:30
    Latest: 14:45
    
    12:00 in range [09:00, 17:00]: true
    
    Before sort:
  2. for (LocalTime t : times)

    pass 1 of 3
    58System.out.println("\nBefore sort:");59for (LocalTime t15:30 : times) {60    System.out.println("  " + t15:30);61}
    output  15:30
    All 3 passes — pass 1 is the card above
    passt
    115:30
    209:00
    312:15
  3. java.util.Arrays.sort(times);

    63java.util.Arrays.sort(times);6465System.out.println("After sort:");66for (LocalTime t : times) {
    outputAfter sort:
  4. for (LocalTime t : times)

    pass 1 of 3
    65System.out.println("After sort:");66for (LocalTime t09:00 : times) {67    System.out.println("  " + t09:00);68}
    output  09:00
    All 3 passes — pass 1 is the card above
    passt
    109:00
    212:15
    315:30
  5. businessStart ← 09:00, businessEnd ← 17:00

    70// Business hours check71LocalTime businessStart→ 09:00 = LocalTime.of(9, 0);72LocalTime businessEnd→ 17:00 = LocalTime.of(17, 0);7374System.out.println("\nBusiness hours check:");75LocalTime[] testTimes = {76    LocalTime.of(8, 30),77    LocalTime.of(12, 0),78    LocalTime.of(18, 0)79};
    output
    Business hours check:
  6. isDuringBusiness ← false

    pass 1 of 3
    81for (LocalTime t08:30 : testTimes) {82    boolean isDuringBusiness→ false = !t.isBefore(businessStart09:00) && t.isBefore(businessEnd17:00);83    System.out.println(t08:30 + " during business: " + isDuringBusinessfalse);84}
    output08:30 during business: false
    All 3 passes — pass 1 is the card above
    passtisDuringBusiness
    108:30false
    212:00true
    318:00false
  7. late ← 23:00, early ← 01:00

    86    // Midnight crossing87    LocalTime late→ 23:00 = LocalTime.of(23, 0);88    LocalTime early→ 01:00 = LocalTime.of(1, 0);89    System.out.println("\n23:00 is before 01:00: " + late.isBefore(early01:00));90}
    output
    23:00 is before 01:00: false
  1. time1 ← 09:30, time2 ← 14:45, time3 ← 09:30, now ← 13:15, earliest ← 09:30

    7public static void main(String[] args) {8    LocalTime time1→ 09:30 = LocalTime.of(9, 30);9    LocalTime time2→ 14:45 = LocalTime.of(14, 45);10    LocalTime time3→ 09:30 = LocalTime.of(9, 30);1112    System.out.println("Time 1: " + time109:30);13    System.out.println("Time 2: " + time214:45);14    System.out.println("Time 3: " + time309:30);15    System.out.println();1617    // isBefore, isAfter18    System.out.println("time1.isBefore(time2): " + time1.isBefore(time214:45));19    System.out.println("time1.isAfter(time2): " + time1.isAfter(time214:45));2021    // equals22    System.out.println("\ntime1.equals(time2): " + time1.equals(time214:45));23    System.out.println("time1.equals(time3): " + time1.equals(time309:30));2425    // compareTo26    System.out.println("\ntime1.compareTo(time2): " + time1.compareTo(time214:45));27    System.out.println("time2.compareTo(time1): " + time2.compareTo(time109:30));28    System.out.println("time1.compareTo(time3): " + time1.compareTo(time309:30));2930    // Current time comparisons31    LocalTime now→ 13:15 = LocalTime.of(13, 15);32    System.out.println("\nSample now: " + now13:15);33    System.out.println("9:30 is before now: " + time1.isBefore(now13:15));34    System.out.println("14:45 is after now: " + time2.isAfter(now13:15));3536    // Find earliest/latest37    LocalTime earliest→ 09:30 = time1.isBefore(time214:45) ? time109:30 : time2;38    LocalTime latest→ 14:45 = time1.isAfter(time214:45) ? time109:30 : time2;39    40    System.out.println("\nEarliest: " + earliest09:30);41    System.out.println("Latest: " + latest14:45);4243    // Check if in time range44    LocalTime check→ 18:30 = LocalTime.of(18, 30);45    LocalTime start→ 09:00 = LocalTime.of(9, 0);46    LocalTime end→ 17:00 = LocalTime.of(17, 0);4748    boolean inRange→ false = !check.isBefore(start09:00) && !check.isAfter(end17:00);49    System.out.println("\n" + check18:30 + " in range [" + start09:00 + ", " + end17:00 + "]: " + inRangefalse);5051    // Sort times52    LocalTime[] times = {53        LocalTime.of(15, 30),54        LocalTime.of(9, 0),55        LocalTime.of(12, 15)56    };5758    System.out.println("\nBefore sort:");59    for (LocalTime t : times) {
    outputTime 1: 09:30
    Time 2: 14:45
    Time 3: 09:30
    time1.isBefore(time2): true
    time1.isAfter(time2): false
    
    time1.equals(time2): false
    time1.equals(time3): true
    
    time1.compareTo(time2): -1
    time2.compareTo(time1): 1
    time1.compareTo(time3): 0
    
    Sample now: 13:15
    9:30 is before now: true
    14:45 is after now: true
    
    Earliest: 09:30
    Latest: 14:45
    
    18:30 in range [09:00, 17:00]: false
    
    Before sort:
  2. for (LocalTime t : times)

    pass 1 of 3
    58System.out.println("\nBefore sort:");59for (LocalTime t15:30 : times) {60    System.out.println("  " + t15:30);61}
    output  15:30
    All 3 passes — pass 1 is the card above
    passt
    115:30
    209:00
    312:15
  3. java.util.Arrays.sort(times);

    63java.util.Arrays.sort(times);6465System.out.println("After sort:");66for (LocalTime t : times) {
    outputAfter sort:
  4. for (LocalTime t : times)

    pass 1 of 3
    65System.out.println("After sort:");66for (LocalTime t09:00 : times) {67    System.out.println("  " + t09:00);68}
    output  09:00
    All 3 passes — pass 1 is the card above
    passt
    109:00
    212:15
    315:30
  5. businessStart ← 09:00, businessEnd ← 17:00

    70// Business hours check71LocalTime businessStart→ 09:00 = LocalTime.of(9, 0);72LocalTime businessEnd→ 17:00 = LocalTime.of(17, 0);7374System.out.println("\nBusiness hours check:");75LocalTime[] testTimes = {76    LocalTime.of(8, 30),77    LocalTime.of(12, 0),78    LocalTime.of(18, 0)79};
    output
    Business hours check:
  6. isDuringBusiness ← false

    pass 1 of 3
    81for (LocalTime t08:30 : testTimes) {82    boolean isDuringBusiness→ false = !t.isBefore(businessStart09:00) && t.isBefore(businessEnd17:00);83    System.out.println(t08:30 + " during business: " + isDuringBusinessfalse);84}
    output08:30 during business: false
    All 3 passes — pass 1 is the card above
    passtisDuringBusiness
    108:30false
    212:00true
    318:00false
  7. late ← 23:00, early ← 01:00

    86    // Midnight crossing87    LocalTime late→ 23:00 = LocalTime.of(23, 0);88    LocalTime early→ 01:00 = LocalTime.of(1, 0);89    System.out.println("\n23:00 is before 01:00: " + late.isBefore(early01:00));90}
    output
    23:00 is before 01:00: false

Combining with Date

Combine.java
Replay: real traced execution (multi-file project)
// Combine date and time

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;

public class Combine {

    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2025, 1, 29);
        LocalTime time = LocalTime.of(14, 30, 0);

        // Combine using atTime
        LocalDateTime dt1 = date.atTime(time);
        System.out.println("Date + Time: " + dt1);

        // Combine using atDate
        LocalDateTime dt2 = time.atDate(date);
        System.out.println("Time + Date: " + dt2);

        // Combine using LocalDateTime.of
        LocalDateTime dt3 = LocalDateTime.of(date, time);
        System.out.println("LocalDateTime.of: " + dt3);

        // Shorthand combinations
        LocalDateTime dt4 = date.atTime(14, 30);
        System.out.println("\nShorthand (HH:MM): " + dt4);

        LocalDateTime dt5 = date.atTime(14, 30, 45);
        System.out.println("Shorthand (HH:MM:SS): " + dt5);

        // Start and end of day
        LocalDateTime startOfDay = date.atStartOfDay();
        LocalDateTime endOfDay = date.atTime(LocalTime.MAX);

        System.out.println("\nStart of day: " + startOfDay);
        System.out.println("End of day: " + endOfDay);

        // Extract date and time from datetime
        LocalDateTime now = LocalDateTime.of(2025, 1, 29, 14, 30, 45);
        LocalDate extractedDate = now.toLocalDate();
        LocalTime extractedTime = now.toLocalTime();

        System.out.println("\nNow: " + now);
        System.out.println("Extracted date: " + extractedDate);
        System.out.println("Extracted time: " + extractedTime);

        // Common datetime patterns
        System.out.println("\nCommon datetimes:");

        // Today at specific time
        LocalDate today = LocalDate.of(2025, 1, 29);
        LocalDateTime todayAt9 = today.atTime(9, 0);
        System.out.println("Today at 9:00: " + todayAt9);

        // Tomorrow at noon
        LocalDateTime tomorrowNoon = today.plusDays(1).atTime(LocalTime.NOON);
        System.out.println("Tomorrow at noon: " + tomorrowNoon);

        // Next Monday at 9 AM
        int daysUntilMonday = (8 - today.getDayOfWeek().getValue()) % 7;
        if (daysUntilMonday == 0) daysUntilMonday = 7;
        LocalDateTime nextMonday9AM = today.plusDays(daysUntilMonday).atTime(9, 0);
        System.out.println("Next Monday 9 AM: " + nextMonday9AM);

        // Schedule times
        System.out.println("\nScheduled times for tomorrow:");
        LocalDate tomorrow = today.plusDays(1);
        LocalTime[] scheduleTimes = {
            LocalTime.of(9, 0),
            LocalTime.of(11, 30),
            LocalTime.of(14, 0),
            LocalTime.of(16, 30)
        };

        for (LocalTime t : scheduleTimes) {
            System.out.println("  " + tomorrow.atTime(t));
        }
    }

}
  1. date ← 2025-01-29, time ← 14:30, dt1 ← 2025-01-29T14:30, dt2 ← 2025-01-29T14:30

    9public static void main(String[] args) {10    LocalDate date→ 2025-01-29 = LocalDate.of(2025, 1, 29);11    LocalTime time→ 14:30 = LocalTime.of(14, 30, 0);1213    // Combine using atTime14    LocalDateTime dt1→ 2025-01-29T14:30 = date.atTime(time14:30);15    System.out.println("Date + Time: " + dt12025-01-29T14:30);1617    // Combine using atDate18    LocalDateTime dt2→ 2025-01-29T14:30 = time.atDate(date2025-01-29);19    System.out.println("Time + Date: " + dt22025-01-29T14:30);2021    // Combine using LocalDateTime.of22    LocalDateTime dt3→ 2025-01-29T14:30 = LocalDateTime.of(date2025-01-29, time14:30);23    System.out.println("LocalDateTime.of: " + dt32025-01-29T14:30);2425    // Shorthand combinations26    LocalDateTime dt4→ 2025-01-29T14:30 = date.atTime(14, 30);27    System.out.println("\nShorthand (HH:MM): " + dt42025-01-29T14:30);2829    LocalDateTime dt5→ 2025-01-29T14:30:45 = date.atTime(14, 30, 45);30    System.out.println("Shorthand (HH:MM:SS): " + dt52025-01-29T14:30:45);3132    // Start and end of day33    LocalDateTime startOfDay→ 2025-01-29T00:00 = date.atStartOfDay();34    LocalDateTime endOfDay→ 2025-01-29T23:59:59.999999999 = date.atTime(LocalTime.MAX);35    36    System.out.println("\nStart of day: " + startOfDay2025-01-29T00:00);37    System.out.println("End of day: " + endOfDay2025-01-29T23:59:59.999999999);3839    // Extract date and time from datetime40    LocalDateTime now→ 2025-01-29T14:30:45 = LocalDateTime.of(2025, 1, 29, 14, 30, 45);41    LocalDate extractedDate→ 2025-01-29 = now.toLocalDate();42    LocalTime extractedTime→ 14:30:45 = now.toLocalTime();43    44    System.out.println("\nNow: " + now2025-01-29T14:30:45);45    System.out.println("Extracted date: " + extractedDate2025-01-29);46    System.out.println("Extracted time: " + extractedTime14:30:45);4748    // Common datetime patterns49    System.out.println("\nCommon datetimes:");50    51    // Today at specific time52    LocalDate today→ 2025-01-29 = LocalDate.of(2025, 1, 29);53    LocalDateTime todayAt9→ 2025-01-29T09:00 = today.atTime(9, 0);54    System.out.println("Today at 9:00: " + todayAt92025-01-29T09:00);55    56    // Tomorrow at noon57    LocalDateTime tomorrowNoon→ 2025-01-30T12:00 = today.plusDays(1).atTime(LocalTime.NOON);58    System.out.println("Tomorrow at noon: " + tomorrowNoon2025-01-30T12:00);59    60    // Next Monday at 9 AM61    int daysUntilMonday→ 5 = (8 - today.getDayOfWeek().getValue()) % 7;62    if (daysUntilMonday == 0) daysUntilMonday = 7;63    LocalDateTime nextMonday9AM→ 2025-02-03T09:00 = today.plusDays(daysUntilMonday5).atTime(9, 0);64    System.out.println("Next Monday 9 AM: " + nextMonday9AM2025-02-03T09:00);6566    // Schedule times67    System.out.println("\nScheduled times for tomorrow:");68    LocalDate tomorrow→ 2025-01-30 = today.plusDays(1);69    LocalTime[] scheduleTimes = {70        LocalTime.of(9, 0),71        LocalTime.of(11, 30),72        LocalTime.of(14, 0),73        LocalTime.of(16, 30)74    };
    outputDate + Time: 2025-01-29T14:30
    Time + Date: 2025-01-29T14:30
    LocalDateTime.of: 2025-01-29T14:30
    
    Shorthand (HH:MM): 2025-01-29T14:30
    Shorthand (HH:MM:SS): 2025-01-29T14:30:45
    
    Start of day: 2025-01-29T00:00
    End of day: 2025-01-29T23:59:59.999999999
    
    Now: 2025-01-29T14:30:45
    Extracted date: 2025-01-29
    Extracted time: 14:30:45
    
    Common datetimes:
    Today at 9:00: 2025-01-29T09:00
    Tomorrow at noon: 2025-01-30T12:00
    Next Monday 9 AM: 2025-02-03T09:00
    
    Scheduled times for tomorrow:
  2. for (LocalTime t : scheduleTimes)

    pass 1 of 4
    76for (LocalTime t09:00 : scheduleTimes) {77    System.out.println("  " + tomorrow.atTime(t09:00));78}
    output  2025-01-30T09:00
    All 4 passes — pass 1 is the card above
    passt
    109:00
    211:30
    314:00
    416:30
LocalDateTime Combines LocalDate and LocalTime into a single object representing both date and time.

Key Methods

  • now(): Current time
  • of(hour, minute, second): Create specific time
  • getHour(), getMinute(), getSecond(): Get components
  • plusHours(), minusMinutes(): Add/subtract time
  • isBefore(), isAfter(): Compare times
  • parse(): From string

Common Operations

  • Add/subtract hours, minutes, seconds
  • Compare times
  • Format to string
  • Combine with date to make LocalDateTime

Immutability

LocalTime is immutable - operations return new instances.

Exercise: Practical.java

Check if a given time falls within business hours (9:00 AM to 5:00 PM)