Opciones de formatDate en Magento

Hace un tiempo ya vimos como empezar a trabajar con el método formatDate.

El mismo se encuentra disponible en casi cualquier phtml, debido a la estructura de herencias de bloques.

La única función que tiene, y no por eso despreciable, es manipular el formato en el cuál se mostrará una fecha proveniente de la base de datos. Si bien lo vamos a usar de manera habitual dentro de nuestros phtmls, es posible utilizarlo también dentro de las plantillas de email.

Vamos a suponer que tenemos un objeto $data en una variable en nuestro phtml, que contiene un registro cualquiera (un producto, una página, etc) y que tiene un campo de fecha (al que vamos a llamar date haciendo honor a la falta de creatividad de ésta hora).

Ahora bien, si quisiéramos mostrarlo y simplemente lo invocamos, obtendríamos la fecha tal cual viene desde la base de datos.

echo $data->getDate();

Mostraría

2009-09-03 11:19:31 PM

Claro está que lo que buscamos es hacer presentable ese valor, y que, además, funcione de manera acorde a nuestra configuración regional.

Para lograrlo, recurrimos al método formatDate (que lo pueden encontrar en /app/code/core/Mage/Core/Helper/Data.php).

Veamos un primer uso del método dentro de un phtml.

echo $this->formatDate($data->getDate());

El resultado sería

03/09/09

Es posible que necesitemos otra representación de la fecha. De la mano del método, podemos, mediante un parámetro adicional, especificar el formato a utilizar.

Los parámetros disponibles son:

  • short
  • medium
  • long
  • full

Veamos en casos prácticos cada uno.

echo $this->formatDate($data->getDate(), 'short');

Devuelve: 03/09/09.

Short es el parámetro por defecto del método.

echo $this->formatDate($data->getDate(), 'medium');

Devuelve: 03/09/2009.

echo $this->formatDate($data->getDate(), 'long');

Devuelve: 3 de septiembre de 2009.

echo $this->formatDate($data->getDate(), 'full');

Devuelve: jueves 3 de septiembre de 2009.

Un último parámetro que podemos aplicar, tiene que ver con el hecho de mostrar o no el valor de hora del campo. Si han prestado atención, y salvo que se me esté pasando por alto algún campo, la totalidad de campos de fecha son campos datetime.

El método formatDate, por defecto, no muestra la hora, pero, si quisiéramos, podríamos mostrarla agregando el parámetro true luego del formato.

Al usarlo:

echo $this->formatDate($data->getDate(),'short',true);
echo $this->formatDate($data->getDate(),'medium',true);
echo $this->formatDate($data->getDate(),'long',true);
echo $this->formatDate($data->getDate(),'full',true);

Obtendríamos lo siguiente:

03/09/09 23:19
03/09/2009 23:19:31
3 de septiembre de 2009 23:19:31 PDT
jueves 3 de septiembre de 2009 23h'19:31 PDT

Y con esto cerramos el capítulo de manipulación de fechas.