代码之家  ›  专栏  ›  技术社区  ›  Ryan C. Thompson

用于解析自然语言时长规范的Perl模块(类似于“at”命令)?

  •  1
  • Ryan C. Thompson  · 技术社区  · 15 年前

    我正在编写一个采用“duration”选项的perl脚本,我希望能够以一种相当灵活的方式指定这个duration,而不是只采用一个单位(例如秒数)。UNIX at 命令通过允许诸如“现在+3小时+2天”之类的规范来实现这种行为。对于我的程序,“now”部分是隐含的,所以我只想解析加号后面的内容(注:以下为 命令还解析确切的日期规范,但我只想解析持续时间。)

    有没有一个perl模块来解析这样的持续时间规范?我不需要你所接受的确切语法


    编辑:基本上,我想要 DateTime::Format::Flexible

    3 回复  |  直到 15 年前
        1
  •  2
  •   Ether    15 年前

    看一看 DateTime::Duration DateTime::Format::Duration

    use DateTime::Duration;
    use DateTime::Format::Duration;
    
    my $formatter = DateTime::Format::Duration->new(
            pattern => '%e days, %H hours'
    );
    
    my $dur = $formatter->parse_duration('2 days, 5 hours');
    my $dt = DateTime->now->add_duration($dur);
    
        2
  •  0
  •   cjm    15 年前

    Time::ParseDate flexible syntax for relative times . 请注意,它总是返回一个绝对时间,因此您无法区分“now+3 hours+2 days”和“3 hours+2 days”之间的区别(这两个都是有效的输入) parsedate ,将返回相同的值)。你可以减法 time

    而且,它不会回来 DateTime 对象,只是一段时间。我不知道你的申请是否有问题。

        3
  •  0
  •   Ryan C. Thompson    15 年前
    推荐文章