Date & Time
LocalTime Introduction
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));
}
}
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
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);
}
}
}
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:t ← 09:00
pass 1 of 959System.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:00All 9 passes — pass 1 is the card above pass hourt1 9 09:00 2 10 10:00 3 11 11:00 4 12 12:00 5 13 13:00 6 14 14:00 7 15 15:00 8 16 16:00 9 17 17:00
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:t ← 09:00
pass 1 of 959System.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:00All 9 passes — pass 1 is the card above pass hourt1 9 09:00 2 10 10:00 3 11 11:00 4 12 12:00 5 13 13:00 6 14 14:00 7 15 15:00 8 16 16:00 9 17 17:00
Time Components
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");
}
}
}
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: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) {outputAfternoonLocalTime[] 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:for (LocalTime t : times)
pass 1 of 477for (LocalTime t06:00 : times) {78 System.out.println(t06:00 + " - " + t.getHour() + "h " + 79 t.getMinute() + "m");80}output06:00 - 6h 0mAll 4 passes — pass 1 is the card above pass t1 06:00 2 12:00 3 18:00 4 23:59
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:if (time.getHour() < 12)
57System.out.println("\nTime period:");58if (time.getHour() < 12) {59 System.out.println("Morning");60} else if (time.getHour() < 17) {outputMorningLocalTime[] 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:for (LocalTime t : times)
pass 1 of 477for (LocalTime t06:00 : times) {78 System.out.println(t06:00 + " - " + t.getHour() + "h " + 79 t.getMinute() + "m");80}output06:00 - 6h 0mAll 4 passes — pass 1 is the card above pass t1 06:00 2 12:00 3 18:00 4 23:59
time_components
Individual parts of a time that can be extracted: hour (0-23), minute (0-59), second (0-59), nanosecond.
Comparing Times
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));
}
}
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:for (LocalTime t : times)
pass 1 of 358System.out.println("\nBefore sort:");59for (LocalTime t15:30 : times) {60 System.out.println(" " + t15:30);61}output 15:30All 3 passes — pass 1 is the card above pass t1 15:30 2 09:00 3 12:15 java.util.Arrays.sort(times);
63java.util.Arrays.sort(times);6465System.out.println("After sort:");66for (LocalTime t : times) {outputAfter sort:for (LocalTime t : times)
pass 1 of 365System.out.println("After sort:");66for (LocalTime t09:00 : times) {67 System.out.println(" " + t09:00);68}output 09:00All 3 passes — pass 1 is the card above pass t1 09:00 2 12:15 3 15:30 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:isDuringBusiness ← false
pass 1 of 381for (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: falseAll 3 passes — pass 1 is the card above pass tisDuringBusiness1 08:30 false 2 12:00 true 3 18:00 false 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
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:for (LocalTime t : times)
pass 1 of 358System.out.println("\nBefore sort:");59for (LocalTime t15:30 : times) {60 System.out.println(" " + t15:30);61}output 15:30All 3 passes — pass 1 is the card above pass t1 15:30 2 09:00 3 12:15 java.util.Arrays.sort(times);
63java.util.Arrays.sort(times);6465System.out.println("After sort:");66for (LocalTime t : times) {outputAfter sort:for (LocalTime t : times)
pass 1 of 365System.out.println("After sort:");66for (LocalTime t09:00 : times) {67 System.out.println(" " + t09:00);68}output 09:00All 3 passes — pass 1 is the card above pass t1 09:00 2 12:15 3 15:30 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:isDuringBusiness ← false
pass 1 of 381for (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: falseAll 3 passes — pass 1 is the card above pass tisDuringBusiness1 08:30 false 2 12:00 true 3 18:00 false 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));
}
}
}
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:for (LocalTime t : scheduleTimes)
pass 1 of 476for (LocalTime t09:00 : scheduleTimes) {77 System.out.println(" " + tomorrow.atTime(t09:00));78}output 2025-01-30T09:00All 4 passes — pass 1 is the card above pass t1 09:00 2 11:30 3 14:00 4 16:30
LocalDateTime
Combines LocalDate and LocalTime into a single object representing both date and time.
Key Methods
now(): Current timeof(hour, minute, second): Create specific timegetHour(),getMinute(),getSecond(): Get componentsplusHours(),minusMinutes(): Add/subtract timeisBefore(),isAfter(): Compare timesparse(): 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)