【问题标题】:Is there a module to generate glob patterns from date format strings in Perl?是否有一个模块可以从 Perl 中的日期格式字符串生成 glob 模式?
【发布时间】:2011-07-25 13:52:41
【问题描述】:

我想从日期格式字符串生成 glob 模式,例如

%Y-%m-%d

应该变成

[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]

虽然

%C (e.g., Sat Nov 19 21:05:57 1994)

应该变成

[A-Z][a-z][a-z] [A-Z][a-z][a-z] [0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]

我想知道,如果这样的东西已经存在。

【问题讨论】:

  • 从什么时候开始日期可以匹配“9999-99-99”?
  • Perl(和 POSIX/Unix)有专门用于解析日期和时间的函数是有原因的。使用 Time::Piece->strptime 而不是 glob。正则表达式比 glob 更好,因为 glob 的限制会给你一个非常大的字符串来匹配。
  • @Zaid:我不想验证日期本身,而是找到像“logfile.log.2011-07-26”这样的文件,而追加日期的方式可以通过日期来配置格式化字符串。也许我应该多解释一下这个场景。
  • @MkV:是的,你是对的。我有点拘泥于全局,因为我正在调整现有代码。但是,是的,我可以只读取目录,然后使用正则表达式匹配文件。谢谢。

标签: perl date format


【解决方案1】:

这不是您问题的直接答案,但有助于实现您可能想要的。

使用 CPAN 中的模块:Date::Parse。它解析不同语言的各种日期格式。

来自文档:

$lang = Date::Language->new('German');
$lang->str2time("25 Jun 1996 21:09:55 +0100");

文档包含多种可供您使用的不同日期格式。

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多