# LocalDate

## `LocalDate` Class

The `LocalDate` class represents a date (year, month, and day) without a time or time zone. It provides methods for creating, manipulating, and comparing date values.

```typescript
var localdate = LocalDate.of(2023, 10, 24); // LDATE 2023-10-24
```

### Static Methods

#### `now()`

* Returns the current date.
* Example Usage:

  ```java
  var currentDate = LocalDate.now();
  ```

#### `parse(text: String)`

* Parses the input text to create a `LocalDate` instance.
* Example Usage:

  ```java
  var parsedDate = LocalDate.parse("2023-10-24");
  ```

#### `of(year: Integer, month: Integer, dayOfMonth: Integer)`

* Creates a `LocalDate` instance with the specified year, month, and day values.
* Example Usage:

  ```java
  var customDate = LocalDate.of(2023, 10, 24);
  ```

#### `ofYearDay(year: Integer, dayOfYear: Integer)`

* Creates a `LocalDate` instance based on the year and day of the year.
* Example Usage:

  ```java
  var dateFromYearDay = LocalDate.ofYearDay(2023, 100);
  ```

#### `ofEpochDay(epochDay: Long)`

* Creates a `LocalDate` instance based on the number of days since the epoch (January 1, 1970).
* Example Usage:

  ```java
  var dateFromEpochDay = LocalDate.ofEpochDay(18898);
  ```

***

### Getter Methods

#### `getYear()`

* Gets the year field.
* Returns the year as an `int` value.
* Example Usage:

  ```java
  var year = customDate.getYear();
  ```

#### `getMonthValue()`

* Gets the month-of-year field from 1 to 12.
* Returns the month as an `int` from 1 to 12.
* Example Usage:

  ```java
  var month = customDate.getMonthValue();
  ```

#### `getDayOfMonth()`

* Gets the day-of-month field.
* Returns the day-of-month as an `int` from 1 to 31.
* Example Usage:

  ```java
  var dayOfMonth = customDate.getDayOfMonth();
  ```

#### `getDayOfYear()`

* Gets the day-of-year field.
* Returns the day-of-year as an `int` from 1 to 365 (or 366 in a leap year).
* Example Usage:

  ```java
  var dayOfYear = customDate.getDayOfYear();
  ```

***

### Date Manipulation Methods

#### `minusYears(yearsToSubtract: Long)`

* Returns a new `LocalDate` with the specified number of years subtracted.
* Example Usage:

  ```java
  var newDate = customDate.minusYears(1);
  ```

#### `minusMonths(monthsToSubtract: Long)`

* Returns a new `LocalDate` with the specified number of months subtracted.
* Example Usage:

  ```java
  var newDate = customDate.minusMonths(2);
  ```

#### `minusWeeks(weeksToSubtract: Long)`

* Returns a new `LocalDate` with the specified number of weeks subtracted.
* Example Usage:

  ```java
  var newDate = customDate.minusWeeks(3);
  ```

#### `minusDays(daysToSubtract: Long)`

* Returns a new `LocalDate` with the specified number of days subtracted.
* Example Usage:

  ```java
  var newDate = customDate.minusDays(10);
  ```

#### `plusDays(daysToAdd: Long)`

* Returns a new `LocalDate` with the specified number of days added.
* Example Usage:

  ```java
  var newDate = customDate.plusDays(5);
  ```

#### `daysUntil(endDate: LocalDate)`

* Calculates the number of days until the specified end date.
* Example Usage:

  ```java
  var daysUntil = customDate.daysUntil(endDate);
  ```

#### `monthsUntil(endDate: LocalDate)`

* Calculates the number of months until the specified end date.
* Example Usage:

  ```java
  var monthsUntil = customDate.monthsUntil(endDate);
  ```

#### `toEpochDay()`

* Returns the number of days since the epoch (typically January 1, 1970).
* Example Usage:

  <pre class="language-java"><code class="lang-java"><strong>var epochDay = customDate.toEpochDay();
  </strong></code></pre>

***

### Comparison Methods

#### `isBefore(other: LocalDate)`

* Checks if the current date is before the specified date.
* Returns `true` if the current date is before `other`, `false` otherwise.
* Example Usage:

  ```java
  var isBefore = customDate.isBefore(parsedDate);
  ```

#### `isAfter(other: LocalDate)`

* Checks if the current date is after the specified date.
* Returns `true` if the current date is after `other`, `false` otherwise.
* Example Usage:

  ```java
  var isAfter = customDate.isAfter(parsedDate);
  ```

***

### Date-Time Combination Methods

#### `atStartOfDay()`

* Combines the date with the time of midnight to create a `LocalDateTime` at the start of the date.
* Example Usage:

  ```java
  var startOfDay = customDate.atStartOfDay();
  ```

#### `atTime(time: LocalTime)`

* Combines the date with the specified `LocalTime` to create a `LocalDateTime`.
* Example Usage:

  ```java
  var dateTime = customDate.atTime(LocalTime.of(15, 30));
  ```

#### `atTime(hour: Integer, minute: Integer, second: Integer)`

* Combines the date with the specified hour, minute, and second to create a `LocalDateTime`.
* Example Usage:

  ```java
  var dateTime = customDate.atTime(15, 30, 45);
  ```
