Las siguientes secciones muestran el uso básico de Zend_Date principalmente
mediante ejemplos. En este manual, "fechas" siempre implica una fecha de calendario con una hora, incluso cuando
no se mencione explícitamente, y viceversa. La parte no especificada toma por defecto una representación interna
de "cero". Así, sumar una fecha que no tiene fecha de calendario y un valor de hora de 12
horas a otra fecha que consiste solo en una fecha de calendario resultaría en una fecha con esa
fecha de calendario y una hora de "mediodía".
Establecer solo una fecha específica, sin parte de hora, implica una hora fijada a 00:00:00. A la inversa, establecer solo una hora específica implica una fecha fijada internamente al 01.01.1970 más el número de segundos igual a las horas, minutos y segundos transcurridos identificados por la hora. Normalmente, las personas miden las cosas desde un punto de partida, como el año 0 d.C. Sin embargo, muchos sistemas de software usan el primer segundo del año 1970 como punto de partida, y denotan las horas como un desplazamiento de marca de tiempo que cuenta el número de segundos transcurridos desde este punto de partida.
Sin ningún argumento, construir una instancia devuelve un objeto en la configuración regional (locale) por defecto
con la fecha local actual, usando la función time() de PHP
para obtener la marca de tiempo UNIX
del objeto. Asegúrese de que su entorno PHP tenga configurada la
zona horaria por defecto correcta.
Ejemplo 26.2. Creando la fecha actual
$date = new Zend_Date(); // Output of the current timestamp print $date;
Revisar los métodos básicos de Zend_Date es un buen punto de partida para
quienes no están familiarizados con los objetos de fecha en otros lenguajes o frameworks. Se
proporcionará un pequeño ejemplo para cada método a continuación.
La fecha en un objeto Zend_Date puede obtenerse como un
entero o cadena localizados usando el método get(). Hay muchas
opciones disponibles, que se explicarán en secciones posteriores.
Ejemplo 26.3. get() - Mostrar una fecha
$date = new Zend_Date(); // Output of the desired date print $date->get();
El método set() modifica la fecha almacenada en el objeto, y
devuelve el valor final de la fecha como una marca de tiempo (no como un objeto). De nuevo, hay muchas
opciones que se explorarán en secciones posteriores.
Ejemplo 26.4. set() - Establecer una fecha
$date = new Zend_Date();
// Setting of a new time
$date->set('13:00:00',Zend_Date::TIMES);
print $date->get(Zend_Date::W3C);
Sumar dos fechas con add() normalmente implica sumar una
fecha real en el tiempo con una marca de tiempo artificial que representa una parte de la fecha, como 12
horas, como se muestra en el ejemplo a continuación. Tanto add() como
sub() utilizan el mismo conjunto de opciones que
set(), que se explicará más adelante.
Ejemplo 26.5. add() - Sumando fechas
$date = new Zend_Date();
// changes $date by adding 12 hours
$date->add('12:00:00', Zend_Date::TIMES);
echo "Date via get() = ", $date->get(Zend_Date::W3C), "\n";
// use magic __toString() method to call Zend_Date's toString()
echo "Date via toString() = ", $date, "\n";
Todos los métodos básicos de Zend_Date pueden operar sobre fechas completas
contenidas en los objetos, o pueden operar sobre partes de la fecha, como comparar el
valor de los minutos en una fecha con un valor absoluto. Por ejemplo, los minutos actuales de
la hora actual pueden compararse con un número específico de minutos usando
compare(), como en el ejemplo siguiente.
Ejemplo 26.6. compare() - Comparar fechas
$date = new Zend_Date();
// Comparation of both times
if ($date->compare(10, Zend_Date::MINUTE) == -1) {
print "This hour is less than 10 minutes old";
} else {
print "This hour is at least 10 minutes old";
}
Para comparaciones simples de igualdad, use equals(), que
devuelve un booleano.
Ejemplo 26.7. equals() - Identificar una fecha o parte de fecha
$date = new Zend_Date();
// Comparation of the two dates
if ($date->equals(10, Zend_Date::HOUR)) {
print "It's 10 o'clock. Time to get to work.";
} else {
print "It is not 10 o'clock. You can keep sleeping.";
}