TigerZF
🌐Español

26.5. Creación de fechas

Zend_Date proporciona varias formas diferentes de crear una nueva instancia de sí mismo. Como existen distintas necesidades, las formas más convenientes se mostrarán en este capítulo.

26.5.1. Crear la fecha actual

La forma más sencilla de crear un objeto de fecha es crear la fecha actual. Puede crear una nueva instancia con new Zend_Date() o usar el conveniente método estático Zend_Date::now(), ambos devolverán la fecha actual como una nueva instancia de Zend_Date. La fecha actual siempre incluye la fecha y hora actuales para la zona horaria actualmente establecida.

Ejemplo 26.10. Creación de fecha por instancia

La creación de fecha mediante la creación de una nueva instancia significa que no necesita proporcionar ningún parámetro. Por supuesto hay varios parámetros que se describirán más adelante, pero normalmente esta es la forma más sencilla y más utilizada de obtener la fecha actual como instancia de Zend_Date.

$date = new Zend_Date();

Ejemplo 26.11. Creación estática de fecha

A veces es más sencillo usar un método estático para la creación de fechas. Para ello puede usar el método now(). Devuelve una nueva instancia de Zend_Date de la misma forma que si usara new Zend_Date(). Pero siempre devolverá la fecha actual y no puede modificarse proporcionando parámetros opcionales.

$date = Zend_Date::now();

26.5.2. Crear una fecha desde una base de datos

Las bases de datos se usan a menudo para almacenar valores de fecha. Pero el problema es que cada base de datos genera sus valores de fecha de una forma diferente. Las bases de datos MsSQL usan una salida de fecha estándar bastante diferente a las bases de datos MySQL. Pero para simplificar, Zend_Date facilita enormemente la creación de una fecha a partir de valores de fecha de base de datos.

Por supuesto, se puede indicar a cada base de datos que convierta la salida de una columna definida a un valor especial. Por ejemplo, podría convertir un valor datetime para que muestre un valor de minutos. Pero esto consume mucho tiempo y a menudo necesita gestionar las fechas de una forma distinta a la esperada al crear la consulta a la base de datos.

Así que tenemos una forma rápida y otra conveniente de crear fechas a partir de valores de base de datos.

Ejemplo 26.12. Creación rápida de fechas a partir de valores de fecha de la base de datos

Se sabe que todas las bases de datos gestionan las consultas lo más rápido posible. Están construidas para actuar y responder con rapidez. La forma más rápida de gestionar fechas es obtener marcas de tiempo unix de la base de datos. Todas las bases de datos almacenan los valores de fecha internamente como timestamp (no como marca de tiempo unix). Esto significa que el tiempo necesario para crear una marca de tiempo mediante una consulta es mucho menor que convertirla a un formato específico.

// SELECT UNIX_TIMESTAMP(my_datetime_column) FROM my_table
$date = new Zend_Date($unixtimestamp, Zend_Date::TIMESTAMP);

Ejemplo 26.13. Creación conveniente de fechas a partir de valores de fecha de la base de datos

La salida estándar de todas las bases de datos es bastante diferente, incluso si parece la misma a primera vista. Pero todas forman parte del estándar ISO y se explican a través de él. Así que la forma más sencilla de crear fechas es el uso de Zend_Date::ISO_8601. Entre las bases de datos que se sabe que son reconocidas por Zend_Date::ISO_8601 están MySQL, MsSQL, por ejemplo. Pero todas las bases de datos también pueden devolver una representación ISO-8601 de una columna de fecha. ISO-8601 tiene la gran ventaja de que es legible por humanos. La desventaja es que ISO-8601 necesita más tiempo para su cómputo que una simple marca de tiempo unix. Pero también debe mencionarse que las marcas de tiempo unix solo se admiten para fechas posteriores al 1 de enero de 1970.

// SELECT datecolumn FROM my_table
$date = new Zend_Date($datecolumn, Zend_Date::ISO_8601);

26.5.3. Crear fechas a partir de un array

Las fechas también pueden crearse mediante el uso de un array. Esta es una forma sencilla y fácil. Las claves de array utilizadas son:

  • day: día de la fecha como número

  • month: mes de la fecha como número

  • year: año completo de la fecha

  • hour: hora de la fecha

  • minute: minuto de la fecha

  • second: segundo de la fecha

Ejemplo 26.14. Creación de fecha por array

Normalmente proporcionará un array de fecha completo para la creación de una nueva instancia de fecha. Pero cuando no proporciona todos los valores, los valores del array no proporcionados se ponen a cero. Esto significa que si, por ejemplo, no se proporciona la hora, se usa la hora 0.

$datearray = array('year' => 2006,
                   'month' => 4,
                   'day' => 18,
                   'hour' => 12,
                   'minute' => 3,
                   'second' => 10);
$date = new Zend_Date($datearray);
$datearray = array('year' => 2006, 'month' => 4, 'day' => 18);
$date = new Zend_Date($datearray);