解析格式化的时间字符串(format-time-string的倒数)


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"and "%y-%m-%d %a %H:%M"并返回'(21761 64499 350937 0)

我正在尝试从网站中解析时间,以便将其转换为组织模式时间戳记,但是在emacs文档中找不到正确的功能时遇到了麻烦。

编辑我正在从评论到erikstoke的答案中推广这一点。parse-time-string并且org-parse-time-string是不够的,因为尽管它们解析许多标准时间字符串,但它们不允许使用指定的格式。两种功能都不是很全面。特别是,它们缺乏ISO8601支持。

Answers:


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处理各种格式,所以我认为代码在那里。下面的函数将从提供的时间字符串中插入组织时间戳记。我没有经过所有时间的测试,但是"15-03-12 Thu 16:49"它会给的"[2015-03-12 tor 16:49]"。("tor"在我的区域设置中是星期四)。

因此,由于您没有提供格式字符串的方法,因此此答案与问题不完全匹配,但希望它仍然可以解决。它应该了解org-time-stamp处理的所有格式。

(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? 此函数将插入具有指定格式的时间字符串。
Cheeso
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.