# Date

`Napi::Date` class is a representation of the JavaScript `Date` object. The
`Napi::Date` class inherits its behavior from the `Napi::Value` class
(for more info see [`Napi::Value`](value.md)).

## Methods

### Constructor

Creates a new _empty_ instance of a `Napi::Date` object.

```cpp
Napi::Date::Date();
```

Creates a new _non-empty_ instance of a `Napi::Date` object.

```cpp
Napi::Date::Date(napi_env env, napi_value value);
```

- `[in] env`: The environment in which to construct the `Napi::Date` object.
- `[in] value`: The `napi_value` which is a handle for a JavaScript `Date`.

### New

Creates a new instance of a `Napi::Date` object.

```cpp
static Napi::Date Napi::Date::New(Napi::Env env, double value);
```

- `[in] env`: The environment in which to construct the `Napi::Date` object.
- `[in] value`: The time value the JavaScript `Date` will contain represented
  as the number of milliseconds since 1 January 1970 00:00:00 UTC.

Returns a new instance of `Napi::Date` object.

### ValueOf

```cpp
double Napi::Date::ValueOf() const;
```

Returns the time value as `double` primitive represented as the number of
milliseconds since 1 January 1970 00:00:00 UTC.

## Operators

### operator double

Converts a `Napi::Date` value to a `double` primitive.

```cpp
Napi::Date::operator double() const;
```

### Example

The following shows an example of casting a `Napi::Date` value to a `double`
primitive.

```cpp
double operatorVal = Napi::Date::New(Env(), 0); // Napi::Date to double
// or
auto instanceVal = info[0].As<Napi::Date>().ValueOf();
```
