Analysieren einer formatierten Zeitzeichenfolge (Umkehrung der Format-Zeitzeichenfolge)

10

Die format-time-stringFunktion verwendet ein Zeitargument wie '(21761 64499 350937 0)und eine Formatzeichenfolge wie "%y-%m-%d %a %H:%M"und gibt so etwas wie zurück "15-03-12 Thu 16:49".

Was ist die Umkehrfunktion, die "15-03-12 Thu 16:49"und "%y-%m-%d %a %H:%M"und zurücknimmt '(21761 64499 350937 0)?

Ich versuche, Zeiten aus einer Website heraus zu analysieren, um sie in Zeitstempel im Organisationsmodus zu konvertieren, aber ich habe Probleme, die richtige Funktion in der emacs-Dokumentation zu finden.

Bearbeiten Ich bewerbe dies von meinem Kommentar zu erikstokes Antwort. parse-time-stringund org-parse-time-stringsind unzureichend, da sie zwar viele Standardzeitzeichenfolgen analysieren, jedoch bestimmte Formate nicht zulassen. Beide Funktionen sind ziemlich unverständlich. Insbesondere fehlt ihnen die ISO8601- Unterstützung.

Matthew Piziak
quelle

Antworten:

4

parse-time-stringanalysiert ebenso wie "Standard" -Zeitzeichenfolgen org-parse-time-string. Die Dokumentation behauptet, dass letzteres schneller sein wird. Beides gibt keine Möglichkeit, das Format der Zeichenfolge anzugeben.

Es gibt auch eine undokumentierte Funktion parse-iso8601-time-string, die ISO8601 in etwas analysiert. Mir ist nicht klar, wie die Ausgabe aussehen soll.

erikstokes
quelle
In der Tat habe ich diese überprüft. Sie geben sogar "Ungültige Zeitangabe" zurück, wenn sie mit ISO8601 gefüttert werden, weshalb ich immer noch suche.
Matthew Piziak
(parse-time-string (current-time-string))arbeitet hier.
Wasamasa
Es gibt eine Funktion, die behauptet, dies zu tun, aber ich verstehe nicht, was die Ausgabe bedeuten soll. Ich habe es in meiner Antwort bearbeitet.
Erikstokes
2

Ich hatte eine ähnliche Situation, konnte aber nichts finden, was sofort funktioniert. Aber da org-time-stampalle Arten von Formaten verarbeitet werden, habe ich angenommen, dass der Code vorhanden ist. Die folgende Funktion fügt einen Organisationszeitstempel aus einer angegebenen Zeitzeichenfolge ein. Ich habe es nicht alle möglichen Male getestet, aber "15-03-12 Thu 16:49"es wird geben "[2015-03-12 tor 16:49]". ( "tor"ist Donnerstag in meinem Gebietsschema).

Diese Antwort stimmt also nicht vollständig mit der Frage überein, da Sie keine Möglichkeit haben, die Formatzeichenfolge bereitzustellen, aber hoffentlich funktioniert sie trotzdem. Es sollte alle Formate verstehen, die der Org-Zeitstempel verarbeitet.

(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)))
Sinnvoller Benutzername
quelle
Dies beantwortet die Frage nicht. Die Frage war: how can I parse a string with a specified format? Diese Funktion fügt einen Zeitstring mit einem bestimmten Format ein.
Cheeso