Analisi della stringa temporale formattata (inversa della stringa temporale formattata)


10

La format-time-stringfunzione richiede un argomento time like '(21761 64499 350937 0)e una stringa di formato like "%y-%m-%d %a %H:%M"e restituisce qualcosa di simile "15-03-12 Thu 16:49".

Qual è la funzione inversa, che prende "15-03-12 Thu 16:49"e "%y-%m-%d %a %H:%M", e ritorna '(21761 64499 350937 0)?

Sto cercando di analizzare i tempi da un sito Web in modo da convertirli in timestamp in modalità org, ma ho problemi a trovare la funzione corretta nella documentazione di emacs.

Modifica Sto promuovendo questo dal mio commento alla risposta di erikstoke. parse-time-stringe org-parse-time-stringsono insufficienti perché mentre analizzano molte stringhe temporali standard, non consentono formati specifici. Entrambe le funzioni sono piuttosto incomprensibili. In particolare, mancano del supporto ISO8601 .

Risposte:


4

parse-time-stringanalizza le stringhe temporali "standard", così come org-parse-time-string. La documentazione afferma che quest'ultimo sarà più veloce. Nessuno dei due offre un modo per specificare il formato della stringa.

Esiste anche una funzione non documentata parse-iso8601-time-stringche analizza ISO8601 in qualcosa. Non mi è chiaro quale dovrebbe essere l'output.


Anzi, ho controllato quelli. Restituiscono anche "Specifica del tempo non valida" quando vengono alimentati ISO8601, motivo per cui sto ancora cercando.
Matthew Piziak,

(parse-time-string (current-time-string))funziona qui.
Wasamasa,

C'è una funzione che pretende di farlo, ma non vedo cosa significhi l'uscita. L'ho modificato nella mia risposta.
erikstokes

2

Ho avuto una situazione simile, ma non sono riuscito a trovare nulla funzionante. Ma dal momento che org-time-stampgestisce tutti i tipi di formati, ho pensato che il codice fosse lì. La funzione seguente inserirà un timestamp org da una stringa di tempo fornita. Non l'ho provato per tutti i tipi di volte, ma per "15-03-12 Thu 16:49"questo darà "[2015-03-12 tor 16:49]". ( "tor"è giovedì nel mio paese).

Quindi questa risposta non corrisponde pienamente alla domanda, dal momento che non hai un modo di fornire la stringa di formato, ma speriamo che funzioni comunque. Dovrebbe comprendere tutti i formati che gestisce il timestamp dell'organizzazione.

(defun jk-org-insert-time-stamp (time-string)
  (interactive "sTime: ")
  (let ((default-time (apply 'encode-time (decode-time))))
    (org-insert-time-stamp
     (apply 'encode-time (org-read-date-analyze time-string default-time default-time)) t t)))

questo non risponde alla domanda. La domanda era: how can I parse a string with a specified format? questa funzione inserisce un timestring con un formato specificato.
Cheeso,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.