2011-05-02 49 views
6

我在Common Lisp(SBCL)中编写了一个简单的网页扫描器作为学习练习,&想按日期排序。为此,我需要将格式为“MM/DD/YYYY”的日期解析为世界时。打包解析Common Lisp中的日期?

我可以简单地标记字符串&将这些位传递给encode-universal-time,但我认为必须有用于日期分析的内置函数(或常用的第三方包)。我非常感谢有人推荐一个:-)

+1

有趣的切线:我发现一个库有一个网站的评论“fixme:不解析yyyymmddTHHMMSS Z神是该死的一切。需要大修“,所以我想我会跳过那一个;-) – 2011-05-02 07:29:19

回答

1

许多实现都有一个UNIX接口,在相同的情况下,这包括strptime函数。

1

Antik处理日期和时间,并包括日期/时间分析器。结果是一个“时间点”,默认情况下是UTC(CL的“通用时间”有些不同,但可以转换为该时间点)。

4

这个答案很晚,但local-time函数库是有特色的,被广泛使用。它基于文章The long painful history of time

supports

  1. 时间和日期算术
  2. ISO 8601 TIMESTRING格式化输出和解析
  3. 读者宏嵌入timestrings直接在代码中
  4. 时区处理(将读取UNIX tzfile格式)
  5. 通用和unix时间历元之间的转换
  6. 儒略日期计算
+2

是的,但它不支持解析日期的字符串表示形式 – hijarian 2015-12-12 07:41:31

+1

@hijarian我已经使用包cl-date-time-parser来做到这一点,它可以采取各种常见的表示形式,并将它们转换为通用时间秒整数表示形式。 – 2016-04-22 17:09:56

+1

@hijarian它取决于字符串表示形式。例如,虽然'(local-time:parse-timestring“2009/06/02“)'有问题,本地时间解析可以与其他字符串格式一起使用 - 例如'(local-time:parse-timestring”2009-06-02“)'。 – dat 2017-02-17 07:17:16