Розбирання відформатованого часового рядка (обернено формат-часовий рядок)


10

format-time-stringФункція приймає аргумент часу , як '(21761 64499 350937 0)і формат рядок , як "%y-%m-%d %a %H:%M"і повертає щось подібне "15-03-12 Thu 16:49".

Що таке зворотна функція, яка приймає "15-03-12 Thu 16:49"і "%y-%m-%d %a %H:%M", і повертається '(21761 64499 350937 0)?

Я намагаюся проаналізувати раз на веб-сайті, щоб перетворити їх у часові позначки в режимі org, але у мене виникають проблеми з пошуком потрібної функції в документації на emacs.

Редагувати Я просуваю це з мого коментаря до відповіді erikstoke. parse-time-stringі org-parse-time-stringє недостатніми, оскільки, хоча вони розбирають багато стандартних часових рядків, вони не допускають заданих форматів. Обидві функції досить незрозумілі. Зокрема, їм не вистачає підтримки ISO8601 .

Відповіді:


4

parse-time-stringрозбирає "стандартні" часові рядки, як це робить org-parse-time-string. Документація стверджує, що остання буде швидшою. Жоден спосіб не визначає формат рядка.

Існує також недокументована функція, parse-iso8601-time-stringяка розбирає ISO8601 на щось. Мені не зрозуміло, яким повинен бути вихід.


Дійсно, я перевірив це. Вони навіть повертають "Неправильну специфікацію часу" при годуванні ISO8601, тому я все ще шукаю.
Матвій Пізіак

(parse-time-string (current-time-string))працює тут.
wasamasa

Є функція, яка претендує на це, але я не бачу, що має означати вихід. Я відредагував це у своїй відповіді.
erikstokes

2

У мене була подібна ситуація, але не вдалося знайти нічого, що вийшло з коробки. Але оскільки org-time-stampобробляє всілякі формати, я зрозумів, що код є. Функція нижче буде вставляти позначку часу org із наданого часового рядка. Я не перевіряв його всіляко, але за "15-03-12 Thu 16:49"це дасть "[2015-03-12 tor 16:49]". ( "tor"четверг у моїй місцевості).

Тож ця відповідь не повністю відповідає питанню, оскільки у вас немає способу надання рядка формату, але, сподіваємось, він все одно вийде. Він повинен розуміти всі формати, якими керується орга-тайм-штамп.

(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)))

це не відповідає на запитання. Питання полягало в тому, що how can I parse a string with a specified format? ця функція вставляє часовий рядок із заданим форматом.
Чесо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.