Common lisp 要在Common Lisp中解析日期的包?

Common lisp 要在Common Lisp中解析日期的包?,common-lisp,Common Lisp,我正在用CommonLisp(SBCL)编写一个简单的web scraper作为学习练习,我想按日期排序。为此,我需要将格式为“MM/DD/YYYY”的日期解析为通用时间 我可以简单地对字符串进行标记并将位传递到编码通用时间,但我认为必须有一个用于日期解析的内置函数(或流行的第三方软件包)。我非常感谢有人推荐一个:-)请参阅和库中的公共Lisp。前者有一个可以使用的parse time函数(参见parse time.lisp)。这两个都包含在库集合中。您可以尝试,它有解析时间,我认为它可以满足您

我正在用CommonLisp(SBCL)编写一个简单的web scraper作为学习练习,我想按日期排序。为此,我需要将格式为“MM/DD/YYYY”的日期解析为通用时间


我可以简单地对字符串进行标记并将位传递到
编码通用时间
,但我认为必须有一个用于日期解析的内置函数(或流行的第三方软件包)。我非常感谢有人推荐一个:-)

请参阅和库中的公共Lisp。前者有一个可以使用的
parse time
函数(参见parse time.lisp)。这两个都包含在库集合中。

您可以尝试,它有
解析时间
,我认为它可以满足您的需要。

许多实现都有UNIX界面,在相同的情况下,这包括strtime函数。

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

这个答案很晚了,但该库功能丰富且使用广泛。这是基于文章的

它:

  • 时间和日期算法
  • ISO 8601时间串格式的输出和解析
  • 读取器宏直接在代码中嵌入时间字符串
  • 时区处理(将读取unix文件格式)
  • 通用和unix时间段之间的转换
  • 朱利安日期计算
  • 我使用当地时间和:

    编辑:和用于解析自然语言日期和时间

    (local-time:parse-timestring "2019-11-13T18:09:06.313650+01:00")  ;; OK
    (local-time:parse-timestring "2019-11-13") ;;OK
    
    默认情况下,此操作在本地时间失败:

    (local-time:parse-timestring "2019/11/13")
    
    但它具有慢性作用:

    (chronicity:parse "2019/11/13")
    @2019-11-13T00:00:00.000000+01:00
    
    我们可以将本地时间的日期分隔符设置为“/”:

    还有时间和日期时间分隔符

    现在,类似“Wed Nov 13 18:13:15 2019”的格式将失败。我们将使用
    cl日期时间解析器
    库:

    (cl-date-time-parser:parse-date-time "Wed Nov 13 18:13:15 2019")
    ;; 3782657595
    ;; 0
    
    它返回宇宙时间,反过来,我们可以用 当地时间图书馆:

    (本地时间:通用到时间戳*)
    ;@2019-11-13T19:13:15.000000+01:00
    
    有趣的切线:我发现的一个库的网站上有一条评论“fixme:not parse yyyyymmddthhmmss Z该死。需要大修“所以我想我应该跳过这个;-)是的,但它不支持解析日期的字符串表示形式。@hijarian我使用了包cl date time解析器来做这件事,它可以采用多种常用表示形式,并将它们转换为以秒为单位的通用时间整数表示形式。@hijarian这取决于字符串表示形式。例如,虽然
    (本地时间:parse timestring“2009/06/02”)
    有问题,但本地时间解析可以与其他字符串格式一起工作——例如,
    (本地时间:parse timestring“2009-06-02”)
    “2009/06/02”没有问题<默认情况下,代码>解析时间字符串失败。但它接受
    :date separator
    参数:
    (本地时间:解析时间字符串“2019/11/13”:date separator\/)
    =>
    @2019-11-13T02:00:00.000000+02:00
    !它没有文档记录,我不得不阅读Slime的建议。公共Lisp目录链接现在转到一个色情网站。这应该被删除。
    (cl-date-time-parser:parse-date-time "Wed Nov 13 18:13:15 2019")
    ;; 3782657595
    ;; 0