Fecha

En la sección que trata la especificación EPUB, en la guía de introducción a la publicación científica, apenas pasé de puntillas por encima de dos elementos básicos del manifiesto, (deliberadamente, puesto que se trata de una introducción), que son imprescindibles en la construcción de un documento EPUB: se trata de la fecha de última modificación y el identificador único. En esta entrada voy a dar algunas recetas para entender y obtener la fecha de modificación en el formado adecuado, mediante el comando date de linux.

Este es un ejemplo claro donde la documentación acaba confundiéndote, y en un par de tonterías puedes perder cuatro horas de tu valioso tiempo. Acerca de la fecha de última modificación, la documentación oficial (EPUB Publications 3.0) realiza varias aproximaciones al formato de las fechas en varios puntos del documento. En un primer momento sólo indica que las fechas utilizadas en los metadatos del documento deben cumplir los formatos para fechas estándar del consorcio W3C, pero lo cierto es, como se puede leer más abajo en la sección Package identifier, que se debe seguir un diseño muy concreto de tales formatos de fechas, no vale cualquiera.

En concreto, las fechas utilizadas deben seguir la convención ISO 8601 para fechas y tiempo, que tiene la forma general

CCYY-MM-DDThh:mm:ssZ

donde:

- C: representa un dígito usado en las unidades de miles y cientos en la cifra que corresponde al año.

- Y: representa un dígito usado en las decenas y unidades de la misma cifra correspondiente al año.

- M: representa un dígito del número de mes.

- D: representa un dígito usado para la cifra que señala cierto día.

- h: representa un dígito del número con que se indica la hora.

- s: representa un dígito de la cifra de los segundos.

Los carateres T y Z son literales en la expresión de arriba, es decir, no representan dígito alguno. El carácter T indica que a partir de ese lugar de la cadena comienza la representación del tiempo. El carácter Z designa la zona de tiempo universal coordinado (UTC), también denominada hora Zulu (palabra que tiene asignada la letra Z en el alfabeto fonético OACI [Organización de Aviación Civil Internacional]).

Para obtener la fecha actual se puede utilizar el comando date de Linux, cuya sintaxis general sigue la forma

~$ date [OPCIÓN]... [+FORMATO]

El formato y las opciones necesarias para obtener la fecha en el formato ISO 8601 son las siguientes:

~$ date --utc +%FT%TZ

No son necesarias muchas explicaciones: la primera T y la Z final son literales, que debe incluir el formato. Con %F se indica la especificación de la fecha y con %T la especificación del tiempo. La opción –utc es para forzar la zona de tiempo universal en lugar de la hora local que indicaría por defecto.

Recursos:

- Conversor de tiempo: http://coderstoolbox.net/unixtimestamp/