Java Localdatetime Class
LocalDateTime is an important class introduced in Java 8's date and time API (java.time package). It represents an immutable date-time object without timezone information. This class can store date and time information at the year, month, day, hour, minute, second, and nanosecond levels.
### Features of LocalDateTime
1. **Immutability**: All java.time classes are immutable and thread-safe
2. **No Timezone**: Only represents local date and time
3. **Precision to Nanoseconds**: Can represent time precise to nanosecond level
4. **Rich API**: Provides extensive methods for date-time calculation and formatting
* * *
## Creating LocalDateTime Objects
### 1. Using Static Factory Methods
## Example
// Get current date and time
LocalDateTime now = LocalDateTime.now();
// Create with specified date and time
LocalDateTime specificDateTime = LocalDateTime.of(2023, 5, 15, 14, 30, 45);
// Use year, month, day, hour, minute
LocalDateTime dateTime1 = LocalDateTime.of(2023, Month.MAY, 15, 14, 30);
// Use year, month, day, hour, minute, second
LocalDateTime dateTime2 = LocalDateTime.of(2023, 5, 15, 14, 30, 45);
// Use year, month, day, hour, minute, second, nanosecond
LocalDateTime dateTime3 = LocalDateTime.of(2023, 5, 15, 14, 30, 45, 100);
### 2. Combining from LocalDate and LocalTime
## Example
LocalDate date = LocalDate.of(2023, 5, 15);
LocalTime time = LocalTime.of(14, 30, 45);
LocalDateTime dateTime = LocalDateTime.of(date, time);
### 3. Parsing from String
## Example
LocalDateTime parsedDateTime = LocalDateTime.parse("2023-05-15T14:30:45");
* * *
## Common Operations
### Getting Date-Time Components
## Example
LocalDateTime dateTime = LocalDateTime.now();
int year = dateTime.getYear();
Month month = dateTime.getMonth();// Returns Month enum
int monthValue = dateTime.getMonthValue();// Returns 1-12
int day = dateTime.getDayOfMonth();
int hour = dateTime.getHour();
int minute = dateTime.getMinute();
int second = dateTime.getSecond();
int nano = dateTime.getNano();
### Date-Time Calculations
## Example
LocalDateTime dateTime = LocalDateTime.now();
// Plus operations
LocalDateTime plusYears = dateTime.plusYears(1);
LocalDateTime plusMonths = dateTime.plusMonths(1);
LocalDateTime plusDays = dateTime.plusDays(1);
LocalDateTime plusHours = dateTime.plusHours(1);
LocalDateTime plusMinutes = dateTime.plusMinutes(1);
LocalDateTime plusSeconds = dateTime.plusSeconds(1);
// Minus operations
LocalDateTime minusYears = dateTime.minusYears(1);
LocalDateTime minusDays = dateTime.minusDays(1);
// Other minus operations are similar...
### Date-Time Comparison
## Example
LocalDateTime dateTime1 = LocalDateTime.of(2023, 5, 15, 14, 30);
LocalDateTime dateTime2 = LocalDateTime.of(2023, 5, 16, 14, 30);
boolean isBefore = dateTime1.isBefore(dateTime2);// true
boolean isAfter = dateTime1.isAfter(dateTime2);// false
boolean isEqual = dateTime1.isEqual(dateTime2);// false
### Adjusting Date-Time
## Example
LocalDateTime dateTime = LocalDateTime.now();
// Modify specific fields
LocalDateTime withYear = dateTime.withYear(2024);
LocalDateTime withHour = dateTime.withHour(15);
// Other fields are similar...
// Using TemporalAdjusters
LocalDateTime firstDayOfMonth = dateTime.with(TemporalAdjusters.firstDayOfMonth());
LocalDateTime lastDayOfYear = dateTime.with(TemporalAdjusters.lastDayOfYear());
* * *
## Formatting and Parsing
### Formatting Date-Time
## Example
LocalDateTime dateTime = LocalDateTime.now();
// Using predefined format
DateTimeFormatter isoDateTime = DateTimeFormatter.ISO_DATE_TIME;
String formatted = dateTime.format(isoDateTime);
// Custom format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String customFormatted = dateTime.format(formatter);
### Parsing String to Date-Time
## Example
String str ="2023-05-15 14:30:45";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime parsedDateTime = LocalDateTime.parse(str, formatter);
* * *
## Conversion with Other Date-Time Classes
### Converting to LocalDate and LocalTime
## Example
LocalDateTime dateTime = LocalDateTime.now();
LocalDate date = dateTime.toLocalDate();
LocalTime time = dateTime.toLocalTime();
### Conversion with Instant and ZonedDateTime
## Example
// Requires timezone information
ZoneId zone = ZoneId.systemDefault();
// LocalDateTime to ZonedDateTime
ZonedDateTime zonedDateTime = dateTime.atZone(zone);
// ZonedDateTime to LocalDateTime
LocalDateTime fromZoned = zonedDateTime.toLocalDateTime();
// LocalDateTime to Instant
Instant instant = zonedDateTime.toInstant();
// Instant to LocalDateTime
LocalDateTime fromInstant = LocalDateTime.ofInstant(instant, zone);
* * *
## Practical Application Examples
### Calculating Interval Between Two Date-Times
## Example
LocalDateTime start = LocalDateTime.of(2023, 5, 15, 9, 0);
LocalDateTime end = LocalDateTime.of(2023, 5, 16, 17, 30);
Duration duration = Duration.between(start, end);
long hours = duration.toHours();// 32
long minutes = duration.toMinutes();// 1950
### Checking if Date is Within a Specific Range
## Example
LocalDateTime checkDate = LocalDateTime.of(2023, 5, 15, 14, 0);
LocalDateTime startDate = LocalDateTime.of(2023, 5, 1, 0, 0);
LocalDateTime endDate = LocalDateTime.of(2023, 5, 31, 23, 59);
boolean isInRange =!checkDate.isBefore(startDate)&&!checkDate.isAfter(endDate);
### Generating Date-Time Sequence
## Example
LocalDateTime start = LocalDateTime.of(2023,
YouTip