DateTimeImmutable::__construct
En esta página
DateTimeImmutable::__construct
date_create_immutable
Devuelve un nuevo objeto DateTimeImmutable
Descripción#
Estilo orientado a objetos
public DateTimeImmutable::__construct([string $datetime], [DateTimeZone $timezone])
```php
Estilo procedimental
```php
date_create_immutable([string $datetime], [DateTimeZone $timezone]): DateTimeImmutable
Devuelve un nuevo objeto DateTimeImmutable.
Parámetros#
datetime
Una cadena de fecha/hora. Los formatos válidos son explicados en la documentación sobre los formatos de Fecha y Hora.
Introduzca "now" aquí para obtener el instante actual cuando se emplee el parámetro timezone.
timezone
Un objeto DateTimeZone que representa la zona horaria de datetime.
Si se omite timezone o es null, se usará la zona horaria actual.
[!NOTE] El parámetro
timezoney la zona horaria actuales se ignoran cuando el parámetrotimees una marca temporal de UNIX (p.ej.@946684800) o especifica una zona horaria (p.ej.2010-01-28T15:00:00+02:00, o2010-07-05T06:00:00Z).
Valores devueltos#
Devuelve una nueva instancia de DateTimeImmutable.
Errores/Excepciones#
Si se pasa una cadena de fecha/hora incorrecta, lanza DateMalformedStringException. Hasta PHP 8.3, lanzaba Exception.
Historial de cambios#
| Versión | Descripción |
|---|---|
| 8.3.0 | Ahora lanza DateMalformedStringException si se pasa una cadena incorrecta, en vez de Exception. |
| 7.1.0 | Desde ahora los microsegundos se rellenan con el valor actual. No con '00000'. |
Ejemplos#
Ejemplo de DateTimeImmutable::__construct
Estilo orientado a objetos
<?php
try {
$date = new DateTimeImmutable('2000-01-01');
} catch (Exception $e) {
echo $e->getMessage();
exit(1);
}
echo $date->format('Y-m-d');
El ejemplo anterior mostrará:
2000-01-01
Estilo procedimental
<?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');
El ejemplo anterior mostrará:
2000-01-01
Complejidades de DateTimeImmutable::__construct
<?php
date_default_timezone_set('America/Jamaica');
// Especificando una fecha/hora en la zona horaria por omisión
$date = new DateTimeImmutable('2000-01-01');
echo $date->format('Y-m-d H:i:sP') . "\n";
// Especificando una fecha/hora en una zona horaria específica.
$date = new DateTimeImmutable('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";
// Fecha/hora actual en la zona horaria por omisión de PHP.
$date = new DateTimeImmutable();
echo $date->format('Y-m-d H:i:sP') . "\n";
// Fecha/hora actual en la zona horaria especificada.
$date = new DateTimeImmutable('now', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";
// Usando una marca temporal de UNIX (UNIX timestamp). Observe que el resultado está en la zona horaria UTC.
$date = new DateTimeImmutable('@946684800');
echo $date->format('Y-m-d H:i:sP') . "\n";
// Completado de los valores inexistentes.
$date = new DateTimeImmutable('2000-02-30');
echo $date->format('Y-m-d H:i:sP') . "\n";
Resultado del ejemplo anterior es similar a:
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
[!NOTE] Las fechas desbordadas se pueden detectar comprobando las advertencias mediante
DateTimeImmutable::getLastErrors.
Cambiando la zona horaria asociada
<?php
$timeZone = new \DateTimeZone('Asia/Tokyo');
$time = new \DateTimeImmutable();
$time = $time->setTimezone($timeZone);
echo $time->format('Y/m/d H:i:s e'), "\n";
Resultado del ejemplo anterior es similar a:
2022/08/12 23:49:23 Asia/Tokyo
Usando una fecha/hora relativas
<?php
$time = new \DateTimeImmutable("-1 year");
echo $time->format('Y/m/d H:i:s'), "\n";
Resultado del ejemplo anterior es similar a:
2021/08/12 15:43:51