2010-05-25 7 views
5

Je comprends qu'emacs Lisp est parfait pour gérer les dates et les heures, mais a-t-il une fonction pour convertir les chaînes en représentation interne d'entiers en utilisant des formats comme %Y, %m, %d, %H, %M, %S, et ainsi de suite? Et aussi, dans le manuel de référence d'emacs, il est dit que les temps sont des listes de deux ou trois entiers, mais existe-t-il une spécification ou une description plus formelle? ~ Merci ~Dates et heures dans Emacs Lisp

Modifier: Merci pour les réponses - mais suppose que je me demandais s'il y avait une fonction qui ne formate temps-chaîne en sens inverse (comme parse-time-string mais avec des spécifications de structure pour la chaîne d'entrée)?

Édition2: Je suppose que la réponse est qu'il n'y a rien intégré ... mais une implémentation partielle a été implémentée here.

+0

J'ai juste essayé strptime.el et il ne fonctionne même pas pour les exemples de "Manual test" donnés dans le fichier; apparemment remplacer-dans-chaîne n'est plus dans emacs. Dommage, je cherche la même fonctionnalité. – Liam

+0

Cela fonctionne-t-il si vous créez un alias '(defalias 'replace-in-string' remplacer-regex-in-string)'? – hatmatrix

Répondre

2

L'heure est renvoyée par la plupart des fonctions liées au temps sous la forme d'une liste de trois nombres entiers. Le premier a les 16 bits les plus significatifs des secondes, tandis que le second a les 16 bits les moins significatifs. Le troisième entier donne la microseconde .

Le nombre de microsecondes est nul sur les systèmes qui ne fournissent pas une résolution de plus fine qu'une seconde.

Pour le reste de votre question jetez un oeil à this section du manuel au cas où vous l'avez manqué.

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

La représentation interne peut changer; Je pense qu'il serait préférable d'utiliser l'API documentée fournie (encoder-time, decode-time, etc) pour y accéder.

Questions connexes