downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

DateTime::createFromFormat> <DateTime::add
Last updated: Fri, 20 May 2011

view this page in

DateTime::__construct

(PHP 5 >= 5.2.0)

DateTime::__constructDevuelve un nuevo objeto DateTime

Descripción

Estilo orientado a objetos

public DateTime::__construct() ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )

Estilo por procesos

DateTime date_create ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )

Devuelve un nuevo objeto DateTime.

Parámetros

time

Una cadena date/time. Los formatos válidos son explicados en Formatos de hora y fecha.

Introduzca NULL aquí para obtener el momento actual cuando se use el parámetro $timezone.

timezone

Un objeto DateTimeZone que representa la zona horaria deseada.

Si se omite $timezone, se usará la zona horaria actual.

Note:

El parámetro $timezone y la zona horaria actuales se ignoran cuando el parámetro $time es una fecha UNIX (p.ej. @946684800) o especifica una zona horaria (p.ej. 2010-01-28T15:00:00+02:00).

Valores devueltos

evuelve una nueva instancia de DateTime. Estilo por procesos devuelve FALSE en caso de error.

Errores/Excepciones

Emite Exception en caso de error.

Historial de cambios

Versión Descripción
5.3.0 Si se especifica una fecha no válida, ahora se lanza una excepción. Anteriormente se emitía un error.

Ejemplos

Example #1 Ejemplo de DateTime::__construct()

Estilo orientado a objetos

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

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

Estilo por procesos

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

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

El resultado de los ejemplos serían:

2000-01-01

Example #2 Complejidades de DateTime::__construct()

<?php
// Fecha/hora especificadas en la zona horaria de su ordenador.
$fecha = new DateTime('2000-01-01');
echo 
$fecha->format('Y-m-d H:i:sP') . "\n";

// Fecha/hora especificadas en la zona horaria especificada.
$fecha = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo 
$fecha->format('Y-m-d H:i:sP') . "\n";

// Fecha/hora actuales en la zona horaria de su ordenador.
$fecha = new DateTime();
echo 
$fecha->format('Y-m-d H:i:sP') . "\n";

// Fecha/hora actuales en la zona horaria especificada.
$fecha = new DateTime(null, new DateTimeZone('Pacific/Nauru'));
echo 
$fecha->format('Y-m-d H:i:sP') . "\n";

// Usando una fecha UNIX.  Nótese el resultado en la zona horaria UTC.
$fecha = new DateTime('@946684800');
echo 
$fecha->format('Y-m-d H:i:sP') . "\n";

// Valores no existentes que se exceden.
$fecha = new DateTime('2000-02-30');
echo 
$fecha->format('Y-m-d H:i:sP') . "\n";
?>

El resultado del ejemplo sería algo 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

Ver también



DateTime::createFromFormat> <DateTime::add
Last updated: Fri, 20 May 2011
 
add a note add a note User Contributed Notes DateTime::__construct
Tim Strehle 05-May-2010 10:50
"The $timezone parameter and the current timezone are ignored when the $time parameter […] is a UNIX timestamp."

Watch out – this means that these two are NOT equivalent, they result in different timezones (unless your current timezone is GMT):

<?php
$d
= new DateTime(); $d->setTimestamp($t);
echo
$o->format('O');
// +0200

$d = new DateTime('@' . $t);
echo
$o->format('O');
// +0000
?>
kendsnyder at gmail dot com 12-Jan-2010 04:37
Also forgot to mention, that MySQL "zeroed" dates do not throw an error but produce a non-sensical date:

<?php

$d
= new DateTime("0000-00-00");
$d->format("Y-m-d"); // "-0001-11-30"

?>

Another good reason to write your own class that extends from DateTime.
kendsnyder at gmail dot com 12-Jan-2010 04:24
The theoretical limits of the date range seem to be "-9999-01-01" through "9999-12-31" (PHP 5.2.9 on Windows Vista 64):

<?php

$d
= new DateTime("9999-12-31");
$d->format("Y-m-d"); // "9999-12-31"

$d = new DateTime("0000-12-31");
$d->format("Y-m-d"); // "0000-12-31"

$d = new DateTime("-9999-12-31");
$d->format("Y-m-d"); // "-9999-12-31"

?>

Dates above 10000 and below -10000 do not throw errors but produce weird results:

<?php

$d
= new DateTime("10019-01-01");
$d->format("Y-m-d"); // "2009-01-01"

$d = new DateTime("10009-01-01");
$d->format("Y-m-d"); // "2009-01-01"

$d = new DateTime("-10019-01-01");
$d->format("Y-m-d"); // "2009-01-01"

?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites