2010-05-25 24 views
5

Entiendo que emacs lisp es ideal para manejar fechas y horas, pero ¿tiene una función para convertir cadenas a la representación interna de enteros utilizando formatos como %Y, %m, %d, %H, %M, %S, y así sucesivamente? Y también, en el manual de referencia de emacs, dice que los tiempos son listas de dos o tres enteros, pero ¿hay una especificación o descripción más formal? Gracias ~ ~Fechas y horas en Emacs Lisp

Editar: Gracias por las respuestas - pero supongo que me preguntaba si había una función que hace formato en tiempo-secuencia en sentido inverso (como parse-time-string pero con especificaciones de estructura de la cadena de entrada)?

Edit2: Supongo que la respuesta es que no hay nada incorporado ... pero se ha implementado una implementación parcial here.

+0

Acabo de probar strptime.el y ni siquiera funciona para los ejemplos de "prueba manual" que figuran en el archivo; aparentemente replace-in-string ya no está en emacs. Lástima, estoy buscando la misma funcionalidad. – Liam

+0

¿Funciona si crea un alias '(defalias 'replace-in-string' replace-regex-in-string)'? – hatmatrix

Respuesta

2

La mayoría de las funciones relacionadas con el tiempo devuelven el tiempo como una lista de tres enteros. El primero tiene los más significativos de 16 bits de los segundos, mientras que el segundo tiene los menos significativos de 16 bits. El tercer entero da el conteo de microsegundos .

El recuento de microsegundos es cero en los sistemas que no proporcionan la resolución más fino que un segundo.

En cuanto al resto de su pregunta, eche un vistazo a this section del manual en caso de que se lo haya olvidado.

2
(defun encode-time-string (string) 
    (apply #'encode-time (parse-time-string string))) 

La representación interna puede cambiar; Creo que sería mejor usar la API documentada proporcionada (tiempo de codificación, tiempo de decodificación, etc.) para acceder a ella.