DateTime::__construct

date_create

Returns new DateTime object

&reftitle.description;

&style.oop;

public `DateTime::__construct` `string` `time`"now" `DateTimeZone` `timezone`&null;

&style.procedural;

`DateTime` `date_create` `string` `time`"now" `DateTimeZone` `timezone`&null;

Returns new DateTime object.

&reftitle.parameters;

`time`

- &date.formats.parameter;

  Enter &null; here to obtain the current time when using the `$timezone` parameter.

`timezone`

- A `DateTimeZone` object representing the timezone of `$time`.

  If `$timezone` is omitted, the current timezone will be used.

  The `$timezone` parameter and the current timezone are ignored when the `$time` parameter either is a UNIX timestamp (e.g. `@946684800`) or specifies a timezone (e.g. `2010-01-28T15:00:00+02:00`).

&reftitle.returnvalues;

Returns a new DateTime instance. &return.falseforfailure.style.procedural;

&reftitle.errors;

Emits `Exception` in case of an error.

&reftitle.changelog;

&Version; | &Description;
5.3.0 | If `time` contains an invalid date/time format, then an exception is now thrown. Previously an error was emitted.

&reftitle.examples;

### `DateTime::__construct` example

&style.oop;

    <?php
    try {
        $date = new DateTime('2000-01-01');
    } catch (Exception $e) {
        echo $e->getMessage();
        exit(1);
    }

    echo $date->format('Y-m-d');
    ?>

&style.procedural;

    <?php
    $date = date_create('2000-01-01');
    if (!$date) {
        $e = date_get_last_errors();
        foreach ($e['errors'] as $error) {
            echo "$error\n";
        }
        exit(1);
    }

    echo date_format($date, 'Y-m-d');
    ?>

&examples.outputs;

    2000-01-01

### Intricacies of `DateTime::__construct`

    <?php
    // Specified date/time in your computer's time zone.
    $date = new DateTime('2000-01-01');
    echo $date->format('Y-m-d H:i:sP') . "\n";

    // Specified date/time in the specified time zone.
    $date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
    echo $date->format('Y-m-d H:i:sP') . "\n";

    // Current date/time in your computer's time zone.
    $date = new DateTime();
    echo $date->format('Y-m-d H:i:sP') . "\n";

    // Current date/time in the specified time zone.
    $date = new DateTime(null, new DateTimeZone('Pacific/Nauru'));
    echo $date->format('Y-m-d H:i:sP') . "\n";

    // Using a UNIX timestamp.  Notice the result is in the UTC time zone.
    $date = new DateTime('@946684800');
    echo $date->format('Y-m-d H:i:sP') . "\n";

    // Non-existent values roll over.
    $date = new DateTime('2000-02-30');
    echo $date->format('Y-m-d H:i:sP') . "\n";
    ?>

&example.outputs.similar;

    2000-01-01 00:00:00-05:00
    2000-01-01 00:00:00+12:00
    2010-04-24 10:24:16-04:00
    2010-04-25 02:24:16+12:00
    2000-01-01 00:00:00+00:00
    2000-03-01 00:00:00-05:00

&reftitle.seealso;

- `DateTime::createFromFormat`
- `DateTimeZone::__construct`
- Date and Time Formats
- date.timezone ini setting
- `date_default_timezone_set`
- `DateTime::getLastErrors`
- `checkdate`