【问题标题】:Perl / regex date format convertPerl/正则表达式日期格式转换
【发布时间】:2011-08-12 22:40:14
【问题描述】:

我正在尝试将日期格式的字符串(例如 'Aug 12/11'.. 转换为 'YYYY-MM-DD',在本例中为 '2011-08-12')。

用于此转换的最佳 perl/regex 是什么?我能够通过解析每个并手动转换它来做到这一点..但我猜有一种更快的方法可以用 perl/regex 来做到这一点。谢谢。

【问题讨论】:

    标签: regex perl datetime


    【解决方案1】:

    我建议不要自己进行任何这样的日期解析,尤其是尝试提出一两个正则表达式。有很多现有的 perl 模块可以做到这一点,例如 Date::Manip。你的许多选择都被合理地覆盖了in this article

    【讨论】:

    • +1 表示Date::Manip。最好使用为此目的而设计的库,而不是自己尝试涵盖所有边缘情况。
    • 我的虚拟主机没有 Date::Manip 并且我没有安装此模块的权限 :(.. 这就是我寻找正则表达式解决方案的原因。
    • @sim 你安装了 DateTime 吗?
    • @simbatish,安装模块不需要特殊权限。一个模块可以安装到任何目录。
    【解决方案2】:

    Time::Piece 长期以来一直是一个核心模块,它确实能够将字符串解析为 Time::Piece 对象,然后它可以为您设置 10 种不同格式的格式。如果 Time::Piece 未安装,您可以尝试查找 cpan 上列出的其他数百个日期时间模块中的一些。 (使用单行: perl -e "use Module::IHope::IsHere || die \'Not found\'")。

    `Time::Piece->strptime(STRING, FORMAT)
                            # see strptime man page. Creates a new
                            # Time::Piece object`
    

    我无法开始在我的主目录中安装模块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 2012-06-20
      相关资源
      最近更新 更多